【发布时间】:2012-09-09 19:38:36
【问题描述】:
我正在尝试找到一个合适的正则表达式来匹配输入字符串中的一对自定义字符。这些自定义字符被其对应的 html 标签替换。
例如
输入字符串可以有成对的下划线来表示粗体字。因此,
_Name_ 输出为 <b>Name</b>
但是,如果字符串中有真正的下划线,则不能用“粗体”标签替换,必须忽略。真正的下划线必须以/ 开头(我找不到更好的字符,它可能是另一个下划线或连字符或其他字符)。
正则表达式必须忽略此真正下划线的任何单个或成对出现。
到目前为止,我可以想出这个正则表达式:
var pattern = @"(?!/)_(.*?)(?!/)_";
但它在以下输入字符串中失败:
_Tom_Katy/_Richard/_/_Stephan_and many users
输出为
<b>Tom</b>Katy/<b>Richard/_/</b>Stephan_and many users
非常感谢您, 推荐
【问题讨论】:
-
您的第一个 (?!/) 应该是后视,而不是前瞻
-
@Gabber:第二个也应该向后看。
-
后视不是在整个正则表达式之前搜索吗?
-
问题不完整..您应该指定
valid输出和invalid输出..这将有助于其他人理解您的问题! -
@AlanMoore 现在明白了,感谢您的建议编辑了我的答案 :)