标签: regular-expression

Bash =~ regex 和 https://regex101.com/

使用https://regex101.com/我构建了一个正则表达式来返回字符串中第一次出现的 IP 地址。

正则表达式:

(?:\d{1,3}\.)+(?:\d{1,3})
Run Code Online (Sandbox Code Playgroud)

RegExp 包括分隔符:

/(?:\d{1,3}\.)+(?:\d{1,3})/
Run Code Online (Sandbox Code Playgroud)

使用以下测试字符串:

eu-west                       140.243.64.99 
Run Code Online (Sandbox Code Playgroud)

它返回一个完整的匹配:

140.243.64.99
Run Code Online (Sandbox Code Playgroud)

无论我尝试使用锚点等做什么,以下 bash 脚本都不适用于生成的正则表达式。

temp="eu-west                       140.243.64.99            "
regexp="(?:\d{1,3}\.)+(?:\d{1,3})"
if [[ $temp =~ $regexp ]]; then
  echo "found a match"
else
  echo "No IP address returned"
fi
Run Code Online (Sandbox Code Playgroud)

bash regular-expression

20
推荐指数
2
解决办法
8万
查看次数

为什么在正则表达式中选择插入符号 (^) 和美元符号 ($) 作为行的开头/结尾?

澄清一下,这不是关于插入符号 (^) 或美元符号 ($) 在正则表达式中的作用的问题。

在具有 QWERTY 布局的现代键盘中,^出现在后面$(即^出现在数字 6$上方和4 上方),所以当我使用它们时,我总是有一段时间的手眼不协调,比如^foobar$.

所以我很好奇,为什么从历史上看,为什么选择插入符号和美元符号来匹配行的开头/结尾,因为如果将它们颠倒过来会更直观。

也许他们当时有不同的键盘布局?显然,在 vi 中选择 ESC 来改变模式的原因是它对 Bill Joy 的键盘有意义:为什么 vim 使用 hjkl 键作为箭头键

regular-expression historical-unix

20
推荐指数
1
解决办法
963
查看次数

ls --hide= 和 ls --ignore= 的语法

ls --hidels --ignore提供了省略通过在--ignore=部件后设置的正则表达式定义的文件的可能性。后者确保不会通过-a, -A. 命令maninfo页面提到了正则表达式。

问题ls --hide=和中支持哪些通配符或正则表达式ls --ignore=

我发现* $ ?似乎支持,以及 POSIX Bracket Expressions。但这似乎并不能一直正常工作,对我来说更像是一种反复试验的游戏。我在这里错过了什么重要的事情吗?

linux command-line ls options regular-expression

19
推荐指数
1
解决办法
4万
查看次数

grep 用于任意长度的字母数字字符串,每边有一个冒号

您将如何 grep 1 到 50 个字符的字母数字字符串(理想情况下,任何长度都可以),每边都有一个冒号 - 典型的结果是包含字符串的所有行:shopping:。到目前为止,我已经得到了下面的代码(我已经尝试了一些变体),但它不起作用:

grep ':[[:alnum:]]{1,100}:' ~/x.txt
Run Code Online (Sandbox Code Playgroud)

command-line grep bash regular-expression

19
推荐指数
1
解决办法
4万
查看次数

如何用新行替换单词

我有一个包含以下数据的文本文件,每一行都以|END|.

T|somthing|something|END|T|something2|something2|END|
Run Code Online (Sandbox Code Playgroud)

我tryig更换|END|\n新行的sed。

 sed 's/\|END\|/\n/g' test.txt
Run Code Online (Sandbox Code Playgroud)

但它产生如下错误输出:

 T
 |
 s
 o
 m
 e
 ...
Run Code Online (Sandbox Code Playgroud)

但我想要的是这个:

T|somthing|something
T|something2|something2
Run Code Online (Sandbox Code Playgroud)

我也尝试过tr。它也没有用。

sed text-processing regular-expression newlines

19
推荐指数
3
解决办法
5万
查看次数

AWK 负正则表达式

我正在寻找一个 awk 正则表达式,它可以给出与特定单词不匹配的所有字符串。

using /^((?!word \+).)*/ 在 java 中有效,但在 AWK 中不起作用。

获取编译失败错误,转义括号修复了编译错误,但正则表达式匹配不正确。

如果有人可以帮助使用 awk 正则表达式,那就太好了。

我不能用 string" !~ /regex/

我需要string" ~ /regex/ 对所有字符串使用正则表达式,但对于特定字符串。

domain应过滤掉包含的字符串。输入

This is domain test
This is do test
This is test
Run Code Online (Sandbox Code Playgroud)

输出

This is do test
This is test
Run Code Online (Sandbox Code Playgroud)

只需要处理正则表达式。无法更改 awk 代码

在 AWK 中 string" ~ /regex/

所以只能通过一个正则表达式来实现这一点。

awk regular-expression

19
推荐指数
4
解决办法
3万
查看次数

vim 正则表达式不需要 \ 转义

Vim里有写在同一风格regexs既然awk例如一个选项

/sp\{0,\}/

/sp{0,}/

vim regular-expression

18
推荐指数
1
解决办法
5185
查看次数

匹配包含 a-zA-Z 以外字符的单词

匹配一个可以使用的词

\v(\w+)
Run Code Online (Sandbox Code Playgroud)

从 vim 帮助:h \w

\w 单词字符:[0-9A-Za-z_]

这完全按照手册中的描述工作。但是,我想匹配包含超出 字符的单词a-z,例如 prästgården。将正则表达式\v(\w+)prästgården匹配产生三个匹配项,而不是:

prästgården
^^ ^^^ ^^^^
Run Code Online (Sandbox Code Playgroud)

如何匹配包含超出字符的单词a-z?我的语言环境设置为英语,如果可能的话,我想保持这种状态。

编辑:这些词可能不属于单个语言环境,例如

prästgården
tre??
Run Code Online (Sandbox Code Playgroud)

vim regular-expression

18
推荐指数
2
解决办法
8316
查看次数

awk 重复 {n} 不起作用

我正在尝试使用重复符号 {n} 打印行,但它不起作用。为了。例如,我想打印长度为 4 个字符的所有行

 awk '/^.{4}$/' test_data
Run Code Online (Sandbox Code Playgroud)

上面的代码没有打印出来。如何修复它以便我可以使用重复符号?我知道像awk '/^....$/' test_dataawk 'length ==3 ' test_data

awk regular-expression

18
推荐指数
3
解决办法
2559
查看次数

vim:在替换命令中使用搜索中的字符串

我经常使用 vim /search 命令来验证我的正则表达式(只是为了看看它匹配什么)。之后我通常使用:%s替换命令,在那里我使用搜索中的正则表达式作为要替换的字符串,例如我首先查找这样的字符串:

/TP-\(\d\{5\}\)-DD-\d\{3\}
Run Code Online (Sandbox Code Playgroud)

它与我想要的完全匹配,所以我进行了替换:

:%s/TP-\(\d\{5\}\)-DD-\d\{3\}/\1/g
Run Code Online (Sandbox Code Playgroud)

但是我必须在这里再次编写整个正则表达式。通常那个正则表达式要长得多,这就是我寻找解决方案的原因:

是否有任何现有的快捷方式或 vim 脚本可以将该搜索模式直接粘贴到替换命令中?

我在终端中使用 vim(没有 gvim)。

vim regular-expression

17
推荐指数
1
解决办法
1970
查看次数