以下是我在VS或Notepad ++中找到两个单词组合的功能。
查找: Word1+[ \w\S]*(?=Word2)
Problem
- 更改要搜索的字词的顺序。
例如:
用于搜索的 (function ( a, b, c, myVars) {})()
文字
function+[ \w\S]*(?=myVars)
。
myVars+[ \w\S]*(?=function)
。
Need: Word1 <---> Word2
我很高兴看到答案。
更多示例:
html文件拆分行:查找:(&lt;),替换: \ n $ 0
带有名称的html连接标记:查找: \ n&lt; / 名称&gt; 替换:&lt; / 名称&gt;
换入标记:查找: ^([\ w \ S] +)替换:&lt; 标记&GT; \ 1·/的代码&GT;
HTML字符代码&lt; - &amp;#x3c;和&GT; - &安培;#x3e;
答案 0 :(得分:0)
我没有使用 Notepad ++ ,我使用的是 UltraEdit ,因此下面的正则表达式仅使用的UltraEdit 强>
\<(word1|word2)\>(?:[\t \S](?!\<\1\>))*?\<(?:word1|word2)\>
这个正则表达式首先搜索word1
OR word2
,它必须作为完整单词而不是单词中的子字符串,因为\<
表示单词的开头{{1} }表示单词的结尾。也可以使用\>
(字边界)代替\b
和\<
。
如果在一行中找到2个单词中的一个,则接下来搜索0个或更多个字符是空格字符还是非贪婪的非空白字符。如果点的默认匹配行为是除行终止符之外的任何字符,则对于UltraEdit来限制对行的搜索是正确的,也可以使用\>
而不是字符类.
。
在两个单词之间的该字符串的每个字符上应用否定前瞻,检查已匹配字符后面的下一个字符是否与第一个OR表达式找到的单词不相等。这个附加条件避免了在OR表达式中只找到包含2个单词之一的行两次。
最后,OR表达式从头开始第二次添加到表达式,但这次是非标记组。因此,搜索必须现在匹配OR表达式中的另一个单词以返回正结果。