【发布时间】:2013-11-25 19:15:48
【问题描述】:
我正在尝试使用正则表达式从 word 文档中提取文本,向前看并在这个答案中查看 foudn:
Regular Expression to find a string included between two characters while EXCLUDING the delimiters
我必须使用的分隔符是
开始:RQ
结束:END-RQ
我添加了以下(powershell)代码:
$regex = [regex] '(?<=RQ)(.*?)(?=END-RQ)'
$matches = $regex.Matches($concat)
问题是匹配是从 END-RQ 中获取 RQ 作为下一个模式的开始。谁能告诉我如何消除它(例如强制正则表达式完全匹配 RQ 和 END-RQ)?将匹配模式用引号括起来似乎不起作用,即使引号被转义。
【问题讨论】:
-
在这种特殊情况下并假设您所有的“RQ...END-RQ”都是平衡的,使用:
RQ((?>[^E]+|E(?!ND-RQ))*)END-RQ是不是更简单(并且可能更快),然后提取捕获组(因为您使用捕获组)? -
组必须保持平衡。感谢您指出这一点。
标签: c# regex powershell