我正在使用特定的正则表达式,我需要传递给grep -E
用简单的英语来说,如果正则表达式必须同时符合以下两个条件,则它必须与单词匹配:
####should be matched#### ignore the red text#########3
suvoo:
:suvoo:
suvoo
suvoo:
suvoo'
suvoo`
`suvoo`
"suvoo"
'suvoo:
'suvoo "ghj
'suvoo
[suvoo~
{suvoo'
his name was `suvoo'
his name is suvoo and he is 25
####shouldnt be matched####
asddsuvooaed
:suvo@abc:
suvooo
1suvoo
suvoo1:
我不确定为什么我的命令什么都不匹配,我可能完全误解了需要转义的内容等
grep -Einr "(^|[[:space:][\"'(,:;<[\`{|~]])suvoo([[:space:][]\"'),:;>\`}|~]]|$)" .
最佳答案
你应该写成
grep -E '(^|[[:space:]"'"'"'`(,:;<[{|~])suvoo([][:space:]"'"'"'),:;>`}|~]|$)'
见online demo
您放错了方括号,请注意应将方括号表达式内的
]
放在最开始的位置。另外,由于引号混合使用,因此使用通用的technique to use single quotes inside single quotes更安全。详细信息
[[:space:]"'"'"'`(,:;<[{|~]
-转换为[[:space:]"'`(,:;<[{|~]
并匹配空格,"
,'
,`
,(
,,
,:
,;
,<
,[
,{
,|
或~
。 [][:space:]"'"'"'),:;>`}|~]
转换为[][:space:]"'),:;>`}|~]
并匹配]
,空格,"
,'
,)
,,
,:
,;
,>
,`
,}
,|
或~
。 关于regex - grep -E具有多个元字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56731154/