Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式与word匹配,但不与<;或>;旁边是c#_C#_Regex - Fatal编程技术网

正则表达式与word匹配,但不与<;或>;旁边是c#

正则表达式与word匹配,但不与<;或>;旁边是c#,c#,regex,C#,Regex,从这个字符串“asdfasdf obama blahobama obama.>obama” 它不应该与blahobama或>obama相提并论 现在我有这个正则表达式\bobama\b 但它也发现“>奥巴马” 我只想找到前两个“奥巴马” 不是第三个。>奥巴马不应该找到匹配的 [^>]\bobama\b 但如果你想选,它不会选以一行开头的obama: ((^)|([^>]\b))obama\b 但如果你想选,它不会选以一行开头的obama: ((^)|([^>]\b))oba

从这个字符串“asdfasdf obama blahobama obama.>obama”

它不应该与blahobama或>obama相提并论

现在我有这个正则表达式\bobama\b

但它也发现“>奥巴马”

我只想找到前两个“奥巴马”

不是第三个。>奥巴马不应该找到匹配的

[^>]\bobama\b
但如果你想选,它不会选以一行开头的
obama

((^)|([^>]\b))obama\b
但如果你想选,它不会选以一行开头的
obama

((^)|([^>]\b))obama\b
一个简单的选项是在单词周围使用,明确禁止

(?])\bobama\b(?![])

同样,您可以根据自己的需要使用:

(?<!\p{S})\bobama\b(?!\p{S})
(?
例如,您可以使用字符类将它们组合起来,以排除数字,而不是使用
[\p{S}\p{N}]

一个简单的选择是在单词周围使用,明确禁止

(?])\bobama\b(?![])

同样,您可以根据自己的需要使用:

(?<!\p{S})\bobama\b(?!\p{S})
(?
例如,您可以使用字符类将它们组合起来,以排除数字,而不是使用
[\p{S}\p{N}]


你能更好地解释一下吗?你想用一种通用的方法来找到多次出现的单词的前两个实例还是别的什么?我想在每次出现时匹配单词obama,除非它两边都有>或<。所以这与obama匹配。但是这个obama<不匹配。你能解释得更好吗?你想用一种通用的方法来找到吗只有前两个多次出现的词或其他什么?我想在每次出现时都匹配obama这个词,除非它的两边都有>或<。所以这与obama匹配。但是这个obama<没有。但是这个(^)|([^>]\b))obama\b在这个“asdfasdf obama blahobama obama.>obama”的第一个匹配中添加了一个前导空格。我在rgx.replace中使用它,因此我在匹配中不能有任何前导空格或尾随空格。此[^>]\bobama\b找到“>obama”,但在“obama”@Harry McCarney使用组中添加了一个前导空格:请给我一个小例子。这个前导空格真的很痛苦。谢谢。但是这个(^)([^>)([^>]\b))obama\b在此“asdfasdf obama blahobama obama.>obama.”的第一个匹配项上添加前导空格。我在rgx.replace中使用此空格,因此在匹配项上不能有任何前导空格或尾随空格。此[^>]\bobama\b查找“>obama”,但在“obama”项上添加前导空格@Harry McCarney使用小组:请你给我举个小例子。这个领导空间真的很痛苦。谢谢。