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 正则表达式-仅当字符前后有空格时才拆分字符_Python_Regex - Fatal编程技术网

Python 正则表达式-仅当字符前后有空格时才拆分字符

Python 正则表达式-仅当字符前后有空格时才拆分字符,python,regex,Python,Regex,我只想分割一个字符串,前提是该字符前后都有空格。在我的例子中,字符是破折号,即“-” 范例 Opzione - AAAA-11 应该分成两部分 Opzione AAAA-11 而不是在 Opzione AAAA 11 语言是python 谢谢你可以用正则表达式来做,但是用非正则表达式的方式,使用split()和join() 你可以用lookaround (?<=\s)-(?=\s) (?匹配-) (?=\s)->正向前瞻匹配以下空格 >边> ->代码> 将匹配 \r>代

我只想分割一个字符串,前提是该字符前后都有空格。在我的例子中,字符是破折号,即“-”

范例

Opzione - AAAA-11
应该分成两部分

Opzione   AAAA-11
而不是在

Opzione AAAA 11
语言是python


谢谢

你可以用正则表达式来做,但是用非正则表达式的方式,使用
split()
join()


你可以用lookaround

(?<=\s)-(?=\s)
(?匹配
-
  • (?=\s)
    ->正向前瞻匹配以下空格
  • <强> >边> <强> ->代码> 将匹配<代码> \r>代码>、<代码> \t>代码>和<代码> \n>代码>,如果您只想考虑空间,您可以有这样的

    (?
    这个
    (\s([\s])\s[\s]?)
    表示两个空格之间除了空格以外的任何东西,然后是除空格以外的任何东西,这样您就可以像
    g
    一样匹配


    因此,两个
    h
    都位于两个空格之间,但是当您仅与
    \s([\s])\s
    匹配时,另一个
    h
    将不会匹配,而是通过
    (\s([\s])\s[\s]?)
    两者都将匹配。

    (?谢谢,请发表评论作为答案,以便我可以接受。我认为破折号只是一个例子,它可能是到之间的任何字符spaces@Gsk同意,先生,那么regex是个不错的选择,但是OP说在我的情况下,字符是破折号,即“-”我不一定同意regex是最好的选择,因为在这种情况下,字符是regex meta字符,那么它可能会成为一个全新的难题,如果用户不了解正则表达式,情况更是如此。
    
    (?<=\s)-(?=\s)
    
    str="Opzione - AAAA-11"
    str=re.sub('(\s([\S])\s[\S]?)','',str)