【发布时间】:2019-05-14 07:39:45
【问题描述】:
我想匹配由左右两个字符组成的分隔符之间的所有内容。例如。 <<Hello>> 其中<< 和>> 是分隔符。这适用于正则表达式\<\<([^\>]+)\>\>。
但在 匹配的 字符串中需要有单个分隔符 < 和 >,例如 <<\<Hello\>>>,其中 \<Hello\> 应该匹配。
这不起作用。
我尝试了否定的前瞻:\<\<((?!\>)[^\>]+)\>\>,但没有成功。
我需要能够转义分隔符。
有什么想法吗?
【问题讨论】:
-
试试
<<([^\\>]*(?:\\.[^\\>]*)*)>>,见regex101.com/r/0CiEbi/1 -
谢谢!!就是这样......几乎......当我在
<<Hello\>\>>>上尝试它时,它匹配<<Hello\>\` (with a backslash at the end but not the following>`) -
能否请您添加一些有效/无效的字符串? BTW,用上面的
<<Hello\>\>>>字符串,捕获的值为Hello\>\>,见regex101.com/r/0CiEbi/2 -
这个
<<Hello\>\>>> <<Test>>应该有两个匹配项:Hello\>\>和Test -
我使用 PowerShell (.NET) 对其进行了测试:
$r = [regex]"<<([^>]*(?:>(?!>)[^>]*)*)>>"; $r.Matches("<<Hello\>\>>> <<Test>>").groups结果:组:{0, 1} 成功:真实名称:0 捕获:{0} 索引:0 长度:12 值:\>> 成功:真实名称:1 捕获:{1} 索引:2 长度:8 值:Hallo\>\ 组:{0, 1} 成功:真实名称:0 捕获:{0}索引:14 长度:8 值:> 成功:真实名称:1 捕获:{1} 索引:16 长度:4 值:测试
标签: regex