Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 如何使用re';拆分字符串时使用特殊字符?_Python_Regex_Python 2.7 - Fatal编程技术网

Python 如何使用re';拆分字符串时使用特殊字符?

Python 如何使用re';拆分字符串时使用特殊字符?,python,regex,python-2.7,Python,Regex,Python 2.7,假设我有一个名为string的变量 string = "Hello(There|World!!" 因为我想在多个分隔符上拆分,所以我使用re.split()来完成这项工作。不幸的是,此字符串包含re模块使用的特殊字符。我不想使用re.escape(),因为那样也会避开感叹号。如果不使用re.escape(),如何在re的特殊字符上拆分 可以使用多个分隔符进行拆分。使用定义要拆分的字符 我想你可能想保留那些感叹号。如果是这样的话 >>> s = "Hello(There|Wor

假设我有一个名为
string
的变量

string = "Hello(There|World!!"
因为我想在多个分隔符上拆分,所以我使用
re.split()
来完成这项工作。不幸的是,此字符串包含
re
模块使用的特殊字符。我不想使用
re.escape()
,因为那样也会避开感叹号。如果不使用
re.escape()
,如何在
re
的特殊字符上拆分

可以使用多个分隔符进行拆分。

使用定义要拆分的字符

我想你可能想保留那些感叹号。如果是这样的话

>>> s = "Hello(There|World!!"
>>> re.split(r'[(|]+', s)
['Hello', 'There', 'World!!']
如果你想在感叹号上拆分

>>> s = "Hello(There|World!!"
>>> re.split(r'[(|!]+', s)
['Hello', 'There', 'World', '']
如果您想拆分其他字符,只需继续将它们添加到类中即可

>>> s = "Hello(There|World!!Hi[There]"
>>> re.split(r'[(|!\[\]]+', s)
['Hello', 'There', 'World', 'Hi', 'There', '']

然后使用
filter
删除列表中的None元素。

到目前为止您在做什么?预期的结果是什么?它们之间有什么区别?@SteveJohnson您预期的输出是什么?如果感叹号也转义了又有什么关系?都是
\
将匹配
。您可以-但通常使用比或更大的字符类ing@JonClements这提供了更好的控制。在这里,我们可以使用!!这在角色类中是不可能的,在角色类中是完全可能的class@JonClements我们如何使用字符类实现它?只需使用
re.split(“[(|!]+”,“Hello(There | World!!”)
-我已将
+
添加到连续分隔符的分组中,这样您将以
'Hello'、'There'、'World'、'']
结束,而不是使用方括号拆分
[
]
?您可以将它们添加到类中,
re.split(r'[((!\[\]+],s)
>>> s = "Hello(There|World!!Hi[There]"
>>> re.split(r'[(|!\[\]]+', s)
['Hello', 'There', 'World', 'Hi', 'There', '']