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,我试图用它们的分离版本替换字符串中所有连字符的单词。我能够检测到连字符的单词,但我无法用单独的版本替换它们。我该怎么做 以下是示例和示例代码: import re text = "one-hundered-and-three- some text foo-bar some--text" re.findall(r'\w+(?:-\w+)+',text) # returns: ['one-hundered-and-three', 'foo-bar'] # I want to modify text

我试图用它们的分离版本替换字符串中所有连字符的单词。我能够检测到连字符的单词,但我无法用单独的版本替换它们。我该怎么做

以下是示例和示例代码:

import re
text = "one-hundered-and-three- some text foo-bar some--text"
re.findall(r'\w+(?:-\w+)+',text)
# returns: ['one-hundered-and-three', 'foo-bar']
# I want to modify text as follows:
#  text_new = "one hundered and three- some text foo bar some--text"
您可以将
re.sub()
repl
参数的函数一起使用:

In [12]: re.sub(r'\w+(?:-\w+)+', lambda match: match.group(0).replace('-', ' '), text)
Out[12]: 'one hundered and three- some text foo bar some--text'
我在这里以一行代码的形式编写了它,但我认为如果将lambda移到一个命名函数中会更清楚。

re.sub()
具有正向的前向和后向:

import re

text = "one-hundered-and-three- some text foo-bar some--text"
print(re.sub(r'(?<=\w)-(?=\w)', ' ', text))

# one hundered and three- some text foo bar some--text
重新导入
text=“一百加三-一些文本foo-bar一些--text”

打印(re.sub(r')(?您可以使用非常简单的图案:

\b-\b
  • \b
    单词边界
  • -
    连字符
  • \b
    单词边界
正则表达式演示


Python演示:

import re

text = "one-hundered-and-three- some text foo-bar some--text"
print(re.sub(r'\b-\b', ' ', text))
印刷品:

one hundered and three- some text foo bar some--text