Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 将引号分隔的字符串与正则表达式匹配,但有例外_Regex - Fatal编程技术网

Regex 将引号分隔的字符串与正则表达式匹配,但有例外

Regex 将引号分隔的字符串与正则表达式匹配,但有例外,regex,Regex,您好,我尝试检查带引号的字符串末尾是否没有:t或:U。 (我使用.Net正则表达式类) 到目前为止,我得到的是 ([\"'])(?:\\\1|.)*?\1 这匹配所有双引号和单引号的单词,例如“Test”和“Test” 我遇到的问题是,我不希望正则表达式匹配“Test”:U或的“Test”:U或的“Test”:t或的“Test”:t您可以使用以下否定的前瞻断言和锚定: ([\"'])(?:\\\1|.)*?\1(?!:[TU]) ^^^^^^^^

您好,我尝试检查带引号的字符串末尾是否没有
:t
:U
。 (我使用.Net正则表达式类)

到目前为止,我得到的是

([\"'])(?:\\\1|.)*?\1
这匹配所有双引号和单引号的单词,例如
“Test”
“Test”

我遇到的问题是,我不希望正则表达式匹配
“Test”:U
的“Test”:U
的“Test”:t
的“Test”:t

您可以使用以下否定的前瞻断言和锚定:

([\"'])(?:\\\1|.)*?\1(?!:[TU])
                      ^^^^^^^^

请参见

您需要在末尾添加一个负前瞻
(?!:[UT])
。另一方面,您可以获得以下更有效的模式:

string pattern = @"[""'](?>(?<="")[^""\\]*(?>\\.[^""\\]*)*""|(?<=')[^'\\]*(?>\\.[^'\\]*)*')(?!:[UT])";
string pattern=@“[”](?>(?\.[^“\\]*)*”(?\.[^'\]*)*)(?!:[UT]);

什么是编程语言或正则表达式风格?谢谢您的回答,但这并不适用我已经对其进行了测试,我的测试字符串是“Test”:U“Test2”:t“Test3”‘Test4’‘Test’5’‘Test”6’‘Test:U’‘Test:t’‘Test:U’‘Test:t’,它应该匹配除前两个字符串以外的所有字符串