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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Regex Python在两个字符之间替换一个字符并保留其余字符_Regex_Python 3.x - Fatal编程技术网

Regex Python在两个字符之间替换一个字符并保留其余字符

Regex Python在两个字符之间替换一个字符并保留其余字符,regex,python-3.x,Regex,Python 3.x,我试图替换两个已知字符之间的逗号(§) 我的测试字符串:“§Bandra(西部),孟买§” 预期输出:”§Bandra(西部);孟买§’ 我试过: re.sub(r'\§[^\,]+\,[^\,]+\§',r'\§[^\,]+\;[^\,]+\§', '§Bandra(West),Mumbai§') 但这只是将正则表达式作为字符串返回:\§[^',']+\;[^\',']+\§ 我做错了什么 您需要正则表达式组,这些组用括号创建,然后用反斜杠和数字引用: >>> re.su

我试图替换两个已知字符之间的逗号(
§

我的测试字符串:
“§Bandra(西部),孟买§”

预期输出:
”§Bandra(西部);孟买§’

我试过:

re.sub(r'\§[^\,]+\,[^\,]+\§',r'\§[^\,]+\;[^\,]+\§', '§Bandra(West),Mumbai§') 
但这只是将正则表达式作为字符串返回:
\§[^',']+\;[^\',']+\§


我做错了什么

您需要正则表达式,这些组用括号创建,然后用反斜杠和数字引用:

>>> re.sub(r'(§[^,]+),([^,]+§)', r'\1;\2', '§Bandra(West),Mumbai§')
'§Bandra(West);Mumbai§'
这里,
(§[^,]+)
对应于
\1
(§[^,]+§)
对应于
\2

更多信息:在
(…)
\number

顺便说一下:

  • 你有一堆不必要的反斜杠,我去掉了
  • 在此特定示例中,您可以使用更简单的模式:

    >>> re.sub(r'(§.*),(.*§)', r'\1;\2', '§Bandra(West),Mumbai§')
    '§Bandra(West);Mumbai§'
    
    甚至是一个简单的
    。替换

    >>> '§Bandra(West),Mumbai§'.replace(',', ';')
    '§Bandra(West);Mumbai§'
    
    • 这个表达式

      (§[^§\r\n]*),([^§\r\n]*§)
      
      以及替代,

      \1;\2
      
      可能只是在这里工作

      试验 输出
      如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 . 如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入


      import re
      
      string = """
      §Bandra(West);Mumbai§
      §Bandra(West),Mumbai§
      §,§
      Bandra(West),Mumbai§
      """
      
      print(re.sub(r'(§[^§\r\n]*),([^§\r\n]*§)', r"\1;\2", string))
      
      §Bandra(West);Mumbai§
      §Bandra(West);Mumbai§
      §;§
      Bandra(West),Mumbai§