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需要非单词,但如果需要单词,那么是的,它们会颠倒过来。谢谢艾伦,这真的很有帮助谢谢艾伦,这真的很有帮助