提问人:aSeriousGuest 提问时间:10/23/2018 最后编辑:aSeriousGuest 更新时间:10/23/2018 访问量:103
正则表达式引号,而不是引号前的特定单词
Regex quotes and not a specific word before quotes
问:
我想做的就是这么简单,但同时时间不是。
我在 C# 中有一个正则表达式函数来查找引号内的所有单词, 但是,如果引号之前存在特定单词,请忽略整个单词并继续下一行。 同时仍在引号内寻找特定类型的符号,也忽略。
例-
My RegEx = @"(?<!Foo\()\""[^{}\r\n]*\""";
Text -
dontfindme1 = "Hello{}"
dontfindme2 = Foo("ABC")
findme1 = "Just a simple text to find"
findme2 = SuperFoo("WORKS")
输出示例 -
"ABC"
"Just a simple text to find"
"WORKS"
现在我的问题是我不想在引号之前找到名称“Foo(” 而且我不想找到“{”或“}”或“(”或“)”或新行 我只需要找不到“ABC”并跳到下一行。
答:
0赞
The fourth bird
10/23/2018
#1
您可以使用否定前瞻来检查字符串是否在双引号或双引号之间不匹配(?!
{}
Foo(
^(?!.*\bFoo\()(?!.*"[^"\r\n]*[{}][^"\r\n]*").*$
在 C# 中string pattern = @"^(?!.*\bFoo\()(?!.*""[^""\r\n]*[{}][^""\r\n]*"").*$";
解释
^
断言字符串的开头(?!
消极的展望,断言接下来的事情不会.*\bFoo\(
匹配任意字符 0+ 次,后跟单词边界和 Foo(
)
关闭负面展望(?!
消极的展望,断言接下来的事情不会.*
匹配任意字符 0+ 次"[^"\r\n]*
匹配双引号,匹配 0+ 次不 , ,"
\r
\n
[{}]
匹配或{
}
[^"\r\n]*"
匹配 0+ 次 not , ,后跟匹配双引号"
\r
\n
)
关闭负面展望.*
匹配任意字符 0+ 次$
断言字符串的末尾
评论
(?<!Foo\()\“[^{}\r\n]*\”
.
(
@
string pattern = @"(?<!Foo\()\""[^{}\r\n]*\""";