regex - 单行正则表达式中的负前瞻
问题描述
我有以下测试字符串:
/// <exception cref="x"><paramref name="a"/> is null.</exception>
/// <exception cref="y"><paramref name="b"/> is null. -or-
/// </exception>dfjhhdfhdfkjhdkjdfhkdfjhdf -or-
这是一个三行字符串。所以我创建了带有 Singleline 标志的正则表达式来捕获带有点的新行。我的正则表达式是:
(<exception.+?>)(?<a>.+?)(?!<\/exception>)-or-
有了这个正则表达式,我希望只匹配第二行。但我得到的是(用regex101.com可视化):
前两行是匹配的,第二组包括</exception>
虽然我已经指定了负前瞻(?!<\/exception>)
。
为什么会这样?如何依靠存在来匹配第二行-or-
?
解决方案
这可能是矫枉过正,但你可以使用一个回火点来匹配-or-
不传递结束标签:
<exception[^>]*>((?!</exception>).)*-or-
演示
这个正则表达式模式说:
<exception[^>]*> match an opening <exception> tag
((?!</exception>).)* then match any content WITHOUT passing a closing </exception> tag
-or- match -or-
推荐阅读
- sapui5 - setVisible 不适用于 SAP UI5 中的列表控件
- c# - Nuke 和更新 nuspec 文件
- php - 如何从检索数据库值中设置cookie并将其发送到php中的另一个页面
- sql-server - SQL Server:限制数据范围
- java - 有没有办法在 Java 正则表达式中包含 DOT 但不包含双整数?
- java - Firebase:无法将 java.lang.String 类型的对象转换为 com.example.g.Model.Cart 类型
- javascript - 使用快速把手为简单的节点 webapp 传递数据
- multithreading - LabVIEW如何处理多处理和多线程?
- python - 张量输出keras上的处理
- sql - SQL WHERE 子句性能问题 AX2012R3