正则表达式:如果字符串末尾的模式不匹配

Vin*_*ent 2 .net c# regex

我有以下正则表达式,我想匹配任何显式点后跟一个或多个:

<b> <i> <u> </b> </i> </u>
Run Code Online (Sandbox Code Playgroud)

如果它出现在字符串的末尾,我希望此正则表达式不匹配此模式.

string = Regex.Replace(string, "\.((<[\/biu]+>)+)", ".$1||")
Run Code Online (Sandbox Code Playgroud)

例如:

This <b>should match.</b> allright.

This <i><b>shouldn't match.</b></i>
Run Code Online (Sandbox Code Playgroud)

Eva*_*ark 13

"\.((<[\/biu]+>)+)(?!$)"
Run Code Online (Sandbox Code Playgroud)

使用带有$符号的否定先行断言来检查行尾.(记住,$所以你要匹配行尾匹配.)


Gum*_*mbo 5

你可以使用原子分组:

\.(?>(?:<\/?[biu]>)+)(?!$)
Run Code Online (Sandbox Code Playgroud)