![](/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.