C# net中的正则表达式,以排除特定单词、多个空格和换行符
我需要一个正则表达式来找到像C# net中的正则表达式,以排除特定单词、多个空格和换行符,c#,regex,regex-negation,C#,Regex,Regex Negation,我需要一个正则表达式来找到像 from xyzTableName with ( index =... 及 from xyzTableName ( index =... 如果with关键字不存在,则应返回匹配项,如果with在FROM关键字之后和之前存在(),则不应存在匹配项。必须忽略FROM和之间的所有其他单词() 我尝试过以下表达方式: @"\bfrom.*[\s\t\n]+(?<!with)[\s\t\n]([\s\t\n]+index" @“
from xyzTableName with ( index =...
及
from xyzTableName ( index =...
如果with
关键字不存在,则应返回匹配项,如果with
在FROM
关键字之后和之前存在(
),则不应存在匹配项。必须忽略FROM
和之间的所有其他单词(
)
我尝试过以下表达方式:
@"\bfrom.*[\s\t\n]+(?<!with)[\s\t\n]([\s\t\n]+index"
@“\bfrom.[\s\t\n]+(?尝试以下模式:\bfrom\b(?。+\b with\b)[^(+\(\s*索引)
string input = @"from xyzTableName
with ( index =...";
string pattern = @"\bfrom\b(?!.+\bwith\b)[^(]+\(\s*index";
bool result = Regex.IsMatch(input, pattern,
RegexOptions.Singleline | RegexOptions.IgnoreCase);
上面返回false
。更改输入以删除单词“with”,它将返回true
。使用RegexOptions。单行
元字符将匹配所有字符,包括换行符(\n
)
模式分解:
\bfrom\b
:与单词“from”完全匹配,并使用单词边界元字符
(?!.+\b with\b)
:负前瞻检查是否为“with”,如果为“with”,则匹配将失败
[^(+
:负数字符类,用于至少一次匹配非左括号的任何字符
\(\s*index
:匹配左括号(注意必须转义)、任何空格,然后匹配单词“index”
尝试以下模式:\b从\b(?。++\b带\b)[^(]+\(\s*索引)
string input = @"from xyzTableName
with ( index =...";
string pattern = @"\bfrom\b(?!.+\bwith\b)[^(]+\(\s*index";
bool result = Regex.IsMatch(input, pattern,
RegexOptions.Singleline | RegexOptions.IgnoreCase);
上面返回false
。更改输入以删除单词“with”,它将返回true
。使用RegexOptions。单行
元字符将匹配所有字符,包括换行符(\n
)
模式分解:
\bfrom\b
:与单词“from”完全匹配,并使用单词边界元字符
(?!.+\b with\b)
:负前瞻检查是否为“with”,如果为“with”,则匹配将失败
[^(+
:负数字符类,用于至少一次匹配非左括号的任何字符
\(\s*index
:匹配左括号(注意必须转义)、任何空格,然后匹配单词“index”
我用@“\bfrom.[\s\t\n]+(?我用@”\bfrom.[\s\t\n]+(?它起作用了,在本例中,“来自xyzTableName with(index=…)”预期仅为false。这是仅主ask。。它起作用了,在本例中,“来自xyzTableName with(index=…)”预期仅为false。这是仅主ask。。