【发布时间】:2020-06-05 13:46:50
【问题描述】:
我想使用正则表达式检测所有带有下划线的单词(但不仅是英语!),然后在它们前面放置一个井号标签,例如这样的句子:
mind_viral immunity is an important element of general_wellbeing
将产生两个匹配项:mind_viral 和 'general_wellbeing`,然后将字符串更改为
#mind_viral immunity is an important element of #general_wellbeing
我正在尝试使用这个正则表达式:
([a-zA-Z]+(?:_[a-zA-Z]+)*)
但它匹配所有单词,而不仅仅是带有下划线的单词。
我可以做些什么不同的事情?
【问题讨论】:
-
[a-zA-Z]+(?:_[a-zA-Z]+)+-+匹配一次或多次次 -
@Aerodynamika 另外,前导或尾随或相邻的下划线呢?我可能会选择
([a-zA-Z]*(?:_[a-zA-Z]*)+)这场比赛mind_viral。mind__viral、_mindViral、mindViral_等。 -
@WiktorStribiżew 请你重新打开这个问题,因为我还需要它不仅可以用英语工作,而且你提供的答案不包括这种可能性。
-
什么意思?它涵盖了你的问题。如果您需要匹配任何字母,请将
[A-Za-z]替换为\p{L}、[[:alpha:]](请参阅 this)(如果您的库支持)。 -
@WiktorStribiżew 不,它没有。它不适用于俄语。我也希望能够不仅匹配它们而且替换它们。请重新打开问题,以便其他人也可以提供他们的答案。谢谢。
标签: regex