意大利语标签的正则表达式

Regex for italian tags

我正在研究一个正则表达式来获取@users 在意大利语中,有时会出现类似 l'@Orazio 的词。 我找不到正确的方法。

我正在使用这条线/(?<=^|\s)(@(\S+))/

这是我的在线测试器 https://regex101.com/r/s5BTm0/12

如您所见,我对案例 4 有疑问

有什么建议吗?

您可以使用

(?<!\S)(?:\w+['’])?@(\S+)
(?<!\w)(?:\w+['’])?@(\S+)

regex demo

详情

  • (?<!\S) - 空格或字符串开头必须立即出现在当前位置的左侧
  • (?<!\w) - 前面没有紧接单词 char
  • 的位置
  • (?:\w+['’])? - 1+ 个单词字符的最佳序列,然后是 '
  • @ - 一个 @ 字符
  • (\S+) - 捕获第 1 组:一个或多个非空白字符。

使用可选组:

(?<=^|\s)(?:\w?'?)(@(\S+))

https://regex101.com/r/s5BTm0/5

前面多于1个字母,使用:

(?<=^|\s)(?:(\w*')?)(@(\S+))

https://regex101.com/r/s5BTm0/8

并匹配所有更新的案例:

https://regex101.com/r/s5BTm0/10

对于不同类型的撇号:

(?<=^|\s)(?:(\w*['´])?)(@(\S+))

https://regex101.com/r/s5BTm0/13