我想匹配的形式使用正則表達式以正則表達式
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 請原諒我的任何混淆,並感謝您的迴應! –