Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
快速Python正则表达式问题:匹配否定字符集_Python_Regex - Fatal编程技术网

快速Python正则表达式问题:匹配否定字符集

快速Python正则表达式问题:匹配否定字符集,python,regex,Python,Regex,我想查找与特定字符序列不匹配的字符串。例如: 差不多 REGEX = r'[^XY]*' 我想查找除相邻的X和Y之外的任意字符数的字符串…上面的正则表达式不起作用,因为它分别阻止X和Y。怎么样: if "XY" not in s: print "matched" else print "not matched" 或者这是为了包含在更长的regexp中?那么,您可能需要一个负的前瞻表达式: REGEXP="...(?!XY)..." 编辑:修复打字错误有几种方法可以做到这一点 ^

我想查找与特定字符序列不匹配的字符串。例如:

差不多

REGEX = r'[^XY]*'
我想查找除相邻的X和Y之外的任意字符数的字符串…上面的正则表达式不起作用,因为它分别阻止X和Y。

怎么样:

if "XY" not in s:
   print "matched"
else
   print "not matched"
或者这是为了包含在更长的regexp中?那么,您可能需要一个负的前瞻表达式:

REGEXP="...(?!XY)..."

编辑:修复打字错误

有几种方法可以做到这一点

^(?!.*XY).*$
前瞻表达式尝试匹配字符串中任意位置的
XY
序列。这是一个消极的前瞻,因此如果它找到一个,匹配尝试将失败。否则,
*
将继续并使用整个字符串

^(?:(?!XY).)*$
该字符重复匹配任何字符(
),但仅在先行检查确认该字符不是
XY
序列的开头之后

^(?:[^X]+|X(?!Y))*$
重复匹配除
X
X
之外的任何字符中的一个或多个,如果后面没有
Y


对于前两个正则表达式,如果它们可能是源字符串中的换行符,则必须应用DOT_ALL修饰符。第三个不需要它,因为它使用了一个否定的字符类-
[^X]
,而不是一个点。

我对python正则表达式不太了解,但您所拥有的应该可以工作。或者试着用
+
替换
*
,我刚刚检查了at,它似乎工作正常。你能给我们一个字符串来测试它吗?我也不知道你分别阻止Xs和Ys是什么意思。这个正则表达式将忽略Xs和Ys…你能不能不只是将有XY的字符串匹配在一起,然后对没有XY的字符串做任何你想做的事情?你的问题是不明确的。
“XY”不是您想要的字符串吗?我想您在第一行有一个额外的
not