![](/img/trans.png)
[英]How to use regex to match anything from A to B, where B is not preceeded by C
[英]Regex: dont match if preceeded by char in range x
我正在尝试使用 Regex (c#) 执行以下操作:
'70'
前面没有ID="
时才匹配(不区分大小写)'70'
之前的字符串不包含'+'
时才匹配示例文本(仅用于视觉效果的换行符):
ID="70" Testtext
MultilingualText Uid="70"
Test="+#12-A170"
CV_70
我得到了第一个条件
(?i)(?<!ID=\")70
这将只匹配第 3 行和第 4 行中的70
,但我不知道如何排除包含'+'
的行。 '+'
的 position 在搜索字符串前面是可变的。
你可能会使用
(?i)(?<!\+.*)(?<!ID=")70
模式匹配
(?i)
不区分大小写的修饰符(?<.\+.*)
如果+
不在左边(?<!ID=")
如果ID+
不是直接在当前 position 的左边70
匹配 70string pattern = @"(?i)(?<!\+.*)(?<!ID="")70";
string input = @"ID=""70"" Testtext
MultilingualText Uid=""70""
Test=""+#12-A170""
CV_70";
foreach (Match m in Regex.Matches(input, pattern))
{
Console.WriteLine(m.Value);
}
Output
70
更新
@anubhava评论的最终工作模式匹配除双引号外的任何字符
(?i)(?<!\+[^"]*)(?<!ID=")70
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.