我想匹配的形式使用正则表达式以正则表达式
set _ on(\s*)set _ off
其中两个突出_
站在了一个连续的字符串表达的两个位置匹配不确定的字符串。
我们的想法是一致的东西,如下列:上等等HALB集富组栏上的设置栏关闭
集酒吧
上集富集酒吧关闭
重要的是,这些指令,在我的情况下,开始设置和结束。
我想匹配的形式使用正则表达式以正则表达式
set _ on(\s*)set _ off
其中两个突出_
站在了一个连续的字符串表达的两个位置匹配不确定的字符串。
我们的想法是一致的东西,如下列:上等等HALB集富组栏上的设置栏关闭
集酒吧
上集富集酒吧关闭
重要的是,这些指令,在我的情况下,开始设置和结束。
您可以用Perl做回引用:
m/^\s*set\s*(\w*)\s*on.*set\s*\1\s*off\s*$/
如何
set\s[^\s]+\son
set\s[^\s]+\soff
说明:[^\s]+
不包含空格的字符串相匹配。 set\s[^\s]+\son
与set foo on
匹配,但不匹配set foo bar on
或set on
。结合上述表达式可以匹配任何你想要的。
你正在使用哪种正则表达式?
^(set bar on)|(set bar off)$
击穿:
^(set bar on) = Looks for "set bar on" at the beginning of a string
(set bar off)$ = Looks for "set bar off" at the end of the string.
这将在字符串的结尾匹配set bar on
在字符串的开头和set bar off
。您可以进行替换,将其更改为空白字符""
,然后将剩余数据提取出来用于匹配。我不知道你用于你的正则表达式实现,所以除了这个之外,我无法帮到你。如果您想要删除set bar on
之后和set bar off
之前的空格,则还可以在开始和结束时添加\s
。
我正在使用grepwin。我无法理解您的建议为什么会起作用, –
@DavidPerlaza我可能会误解您想要实现的目标。也许你可以澄清一下:(i)你是否寻找一对匹配的'set xxx ... on' ...'set xxx off'指令,其中'xxx'是相同的?或者(ii)是否要捕获所有出现的“set xxx(on | off)”? – January
两者。目前我正在努力寻找(ii)的一个方面,即确保要搜索的文件以集合xxx开始并最终以集合xxx结束结束,而在将xxx设置为关闭之后没有设置xxx开启。它们之间的任何行为都很好。 下面的正则表达式处理(i)使用反向引用: set(。*)on(\ s *)set \ 1 off 请原谅我的任何混淆,并感谢您的回应! –