[英]C# Regex to match any character next to a specified substring but ignoring newline/tab character
[英]Using regex to match any character until a substring is reached?
我希望能够匹配特定的字符序列,从特定的 substring 开始并以特定的 substring 结束。 如果一行上只有一个实例要匹配,但如果一行上应该有多个匹配项,则我的积极前瞻正则表达式有效。 我理解这是因为 (.+) 会捕获所有内容,直到找到最后一个正向前瞻表达式。 如果它能够在找到第一个表达式之前捕获所有内容,那就太好了。
这是我的正则表达式尝试:
@@FOO\[(.*)(?=~~)~~(.*)(?=\]@@)\]@@
样本输入:
@@FOO[abc~~hi]@@ @@FOO[def~~hey]@@
所需的 output:2 个匹配项,每个 (abc, hi) 和 (def, hey) 有 2 个匹配组。
实际output:1对2组(abc~~hi]@@@@FOO[def, hey)
有没有办法获得所需的 output?
提前致谢!
使用问号,它将尽可能少地匹配。
@@FOO\[(.*?)(?=~~)~~(.*?)(?=\]@@)\]@@
这一个也有效,但不那么严格,虽然更容易阅读
@@FOO\[(.*?)~~(.*?)\]@@
* 运算符默认是贪婪的,这意味着它会尽可能多地吃掉字符串,同时仍然留下足够的空间来匹配剩余的正则表达式。 您可以通过附加一个? 给它。 请务必阅读链接上的差异。
您可以改用String.IndexOf()方法来查找 substring 的第一次出现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.