假设我有一个像下面这样的文本:
Lorem-Ipsum is simply dummy text of-the printing and typesetting industry. abc123-xyz 1abcc-xy-ef apple.pear-banana asdddd-abc-cba
如果-
位于字母字符(字母)和-
([a-zA-Z-]
)之间,那么我想用空格替换-
,直到空格之前/之后。因此,结果应该是:
Lorem Ipsum is simply dummy text of the printing and typesetting industry. abc123-xyz 1abcc-xy-ef apple.pear-banana asdddd abc cba
我试探着:\b(?<=[a-zA-Z]+)\-(?=[a-zA-Z]+)\b
这是无效的,因为lookbehind不允许使用量词,而且我猜即使它有效,也不能覆盖所有场景。
是否有一种方法可以使用可变长度的lookbehind,或者对于这种情况是否有其他方法?
编辑:使用Python re库
1条答案
按热度按时间vfh0ocws1#
您可以使用
正则表达式匹配空格分隔的字母单词,其中至少有一个
-
。然后,所有连字符被替换为空格内的匹配。请参阅regex demo。* 详细数据 *:
(?<!\S)
-左侧空白边界[a-zA-Z]+
-一个或多个ASCII字母(?:-[a-zA-Z]+)+
-出现一个或多个-
字符,然后出现一个或多个ASCII字母(?!\S)
-右侧空白边界。将
[a-zA-Z]
替换为[^\W\d_]
以匹配任何Unicode字母单词。请参阅Python demo:
输出量: