2

我想在文档中搜索以下字符串

<whoName>[substring]</whoName>

其中子字符串!=“自我”

所以

<whoName>other</whoName> 

会通过的。

<whoName>self</whoName> 

会失败

4

3 回答 3

4

您可以使用这个基于负前瞻的正则表达式:

<(whoName)>(?!self\s*<).*?<\/\1>

正则表达式演示

正则表达式分解:

<(whoName)>  # Match <whoName> and capture it ($1)
(?!self\s*<) # Negative lookahead that means current position is not followed by literal 
             # self followed by 0 or more spaces and <
.*?          # Match 0 or more characters (non-greedy)
<\/\1>       # Match closing tag using back-reference to captured group #1
于 2015-09-05T14:03:42.937 回答
1

使用这个正则表达式:

^<whoName>((?!self<).)*</whoName>

在记事本++和regex101中测试

于 2015-09-05T14:04:36.757 回答
1

您可以在此处找到解决方案。

你可以使用类似的东西

<whoName>(?!self)[a-z0-9]*<\/whoName>

(在这里试试这个:https ://regex101.com/r/vW8sP3/1 )。

正如您可以想象的那样,相关部分是(?!self).

于 2015-09-05T14:07:03.633 回答