【发布时间】:2021-10-18 12:17:19
【问题描述】:
我正在尝试创建一个正则表达式,它会删除以连字符开头或结尾的任何单词(不是两者)。
word1- -> 移除
-word2 -> 删除
sub-word ->保持
我的尝试如下:
def begin_end_hyphen_removal(line):
return re.sub(r"((\s+|^)(-[A-Za-z]+)(\s+|$))|((\s+|^)([A-Za-z]+-)(\s+|$))","",line)
但是,当我尝试将其应用于以下行时:
here are some word sub-words -word1 word2- sub-word2 word3- -word4
-word5 example
word6-
word7-
another one -word8
-word9
我再次得到与输出相同的输入。
【问题讨论】:
-
唯一不清楚的部分是如何处理
-some-。我知道它不应该匹配(“删除任何以连字符(不是两者)开头或结尾的单词”)。 -
-sub1-sub2呢? -
@WiktorStribiżew 是的,如果它是
-some-,我想保留它。谢谢!
标签: python-3.x regex