Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.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,我试图在所有非单词模式上划一条线,除了。(点) 通常我想它可以在java中像[\W^[.]]一样完成,但在python中如何做呢?python有一个方便的函数 >>> s = "ab.cd.ef.gh" >>> s.split(".") ['ab', 'cd', 'ef', 'gh'] Python为此提供了一个方便的函数 >>> s = "ab.cd.ef.gh" >>> s.split(".") ['ab', 'cd'

我试图在所有非单词模式上划一条线,除了。(点)

通常我想它可以在java中像[\W^[.]]一样完成,但在python中如何做呢?

python有一个方便的函数

>>> s = "ab.cd.ef.gh"
>>> s.split(".")
['ab', 'cd', 'ef', 'gh']

Python为此提供了一个方便的函数

>>> s = "ab.cd.ef.gh"
>>> s.split(".")
['ab', 'cd', 'ef', 'gh']

我假设您希望在除点之外的所有非单词模式上拆分字符串

编辑:Python不支持您正在使用的Java风格的正则表达式语法。我建议先用一根长字符串替换所有的点,然后拆分字符串,然后再把点放回去

import re
long_str = "ABCDEFGH"
str = str.replace('.', long_str)
result = re.split(r'\W', str)
然后在使用
result
时,再次将所有
long\u str
序列替换为一个点


这是一个非常糟糕的解决方案,但它可以工作。

我假设您希望在除点之外的所有非单词模式上拆分字符串

编辑:Python不支持您正在使用的Java风格的正则表达式语法。我建议先用一根长字符串替换所有的点,然后拆分字符串,然后再把点放回去

import re
long_str = "ABCDEFGH"
str = str.replace('.', long_str)
result = re.split(r'\W', str)
然后在使用
result
时,再次将所有
long\u str
序列替换为一个点


这是一个非常糟糕的解决方案,但它可以工作。

提供了一个非常好的Python正则表达式模块参考。下面的内容应该可以帮到你

import re
re.split(r'[\w.]+', text_string)
或者


Python的正则表达式模块有一个很好的参考。下面的内容应该可以帮到你

import re
re.split(r'[\w.]+', text_string)
或者


首先,您的Java语法是关闭的。这就是你想要的:

[\W&&[^.]]
匹配由“任意非单词字符”和“除
以外的任意字符”描述的集合交集中的字符,但如果您只使用以下字符,则这是多余的:

[^\w.]
…或“任何非文字字符或
”的字符。在Python中也是如此(在大多数其他版本中也是如此),不过您可能希望匹配一个或多个字符:

re.split(r'[^\w.]+', the_string)
但使用@gnibbler的方法匹配您想要保留的零件,而不是您想要丢弃的零件,可能更简单:

re.findall(r'[\w.]+', the_string)

首先,您的Java语法是关闭的。这就是你想要的:

[\W&&[^.]]
匹配由“任意非单词字符”和“除
以外的任意字符”描述的集合交集中的字符,但如果您只使用以下字符,则这是多余的:

[^\w.]
…或“任何非文字字符或
”的字符。在Python中也是如此(在大多数其他版本中也是如此),不过您可能希望匹配一个或多个字符:

re.split(r'[^\w.]+', the_string)
但使用@gnibbler的方法匹配您想要保留的零件,而不是您想要丢弃的零件,可能更简单:

re.findall(r'[\w.]+', the_string)

这对OP“除了点以外的所有非单词模式”有什么帮助?!这只会被点分开——和OP要求的完全不同。噢!事实上是两极分化。我还没喝咖啡呢。很抱歉。这对OP“除了点以外的所有非单词模式”有什么帮助?!这只会被点分开——和OP要求的完全不同。噢!事实上是两极分化。我还没喝咖啡呢。很抱歉。非常完美,谢谢:)你能给我解释一下吗???
[\w^[.]]
是分隔符,而
[\w.]+
是单词,因此我们称之为
findall
。非常完美,谢谢:)你能给我解释一下吗???
[\w^[.]]
是分隔符,而
[\w.]+
是单词,因此,我们称之为
findall
@Ashish,不是:在一个模式中,几乎每个特殊字符都在“集合”(即括号之间)内被“禁用”,尤其是竖条(在其“或”意义上,它将在括号外被禁用)。@Alex:我记得你在文章中提到Python是如何成为谷歌的一部分的。读得很好。你的正则表达式现在可以工作了,但是你已经把它们颠倒了。
split
regex应该是
[^\w.]+
,而
findall
regex应该是
[\w.]+
。我觉得OP需要非单词,但如果需要单词,那么是的,它们会被颠倒。@Ashish,nope:几乎每个特殊字符都在一个模式中的“集合”(即括号之间)内被“禁用”,尤其是竖条(在其“或”的意义上,它应该在括号外)。@Alex:我记得你在文章中提到Python是如何成为Google的一部分的。读得很好。你的正则表达式现在可以工作了,但是你已经把它们颠倒了。
split
regex应该是
[^\w.]+
,而
findall
regex应该是
[\w.]+
。我觉得OP需要非单词,但如果需要单词,那么是的,它们会颠倒过来。谢谢艾伦,这真的很有帮助谢谢艾伦,这真的很有帮助