Regex 如何在字母数字字符和非字母数字字符之间添加空格?
如果一个单词包含字母数字字符,并且第一个或多个字符是(或是)非字母数字字符,那么如何将每个前导的非字母数字字符分割为一个单独的单词;无论是否应用了第一条规则,如果单词包含字母数字字符,并且最后一个或多个字符是(或是)非字母数字字符,那么如何将每个尾随的非字母数字字符分割为单独的单词 例如,如果我有一个Regex 如何在字母数字字符和非字母数字字符之间添加空格?,regex,python-3.x,Regex,Python 3.x,如果一个单词包含字母数字字符,并且第一个或多个字符是(或是)非字母数字字符,那么如何将每个前导的非字母数字字符分割为一个单独的单词;无论是否应用了第一条规则,如果单词包含字母数字字符,并且最后一个或多个字符是(或是)非字母数字字符,那么如何将每个尾随的非字母数字字符分割为单独的单词 例如,如果我有一个 string = "John had a meeting with 3managers! %nervous:( t^ria7 #manager's.!" 输出应该如下所示 "John had a
string = "John had a meeting with 3managers! %nervous:( t^ria7 #manager's.!"
输出应该如下所示
"John had a meeting with 3managers ! % nervous : ( t^ria7 # managers's . !"
(新的)想法是用空格分割单词,然后对每个单词应用另一个正则表达式。最后,零件又粘在了一起。有问题的表述是:
^(\W+)|(\W+)$
字符串开头或结尾的非单词字符,请参阅。
在
Python
中,您需要检查捕获了哪个组以插入适当的空白:
import re
string = """John had a meeting with 3managers! %nervous:( t^ria7 #manager's."""
def replacer(match):
if match.group(1) is not None:
return '{} '.format(match.group(1))
else:
return ' {}'.format(match.group(2))
rx = re.compile(r'^(\W+)|(\W+)$')
string = " ".join([rx.sub(replacer, word) for word in string.split()])
print(string)
这就产生了
John had a meeting with 3managers ! % nervous :( t^ria7 # manager's .
您自己试过什么吗?我试过使用这个re.sub(r'(\W)(\W'),r'\1\2',字符串)但问题是,它在所有单词之间添加了空格,并且不能同时满足这两个规则。安装另一个库是一个选项吗?不幸的是,我没有用更简单的解决方案更新我的答案。如何在同一代码中的两个非字母数字字符之间添加空格。例如,要获得输出,就像John与3名经理开会一样!%紧张的:(t^ria7#manager's.“这里有一个空格在:和之间(和空格在.和之间)”