【问题标题】:Regex to match last character of words having length greater than 1正则表达式匹配长度大于 1 的单词的最后一个字符
【发布时间】:2017-06-14 13:01:43
【问题描述】:

我想匹配句子中每个单词的最后一个字符,其中只有那些长度大于1的单词的最后一个字符应该匹配。

例如,如果句子是:-

I love regex.

那么正则表达式应该只匹配 loveregex 的最后一个字符,即 ex ,而不是

到目前为止,我能够使用这个正则表达式匹配每个单词的最后一个字符,包括长度为 1 的字符:-

[a-zA-Z0-9](?= |\.|,|$)

但我只想匹配长度大于 1 的单词的最后一个字符。我该怎么做?

测试链接:- https://regex101.com/r/7tnXnB/1/

【问题讨论】:

  • 必须是正则表达式吗?您可以将字符串拆分为单词数组并按 word[word.length-1] 选择每个单词的最后一个字母
  • 您是否需要考虑 Unicode 字母,例如单词 café

标签: javascript regex


【解决方案1】:

您可以使用(否定)字边界\b\B

\B\w\b

这里\w 匹配单词字符,\w\b 断言单词边界(因此它只会匹配单词中的最后一个字符),\B 断言没有单词边界之前 这个角色。

【讨论】:

  • 唯一要提的是,\w 包含下划线——这在普通文本中不应该是一个问题——但人们永远不知道 :)
  • 甜蜜而简单。优秀。有效。非常感谢。
【解决方案2】:

试试

[A-Z0-9a-z]{2,}

{2,) 确保它只会获得长度为 2 或更多的字符

【讨论】:

  • 这不是他想要的......它匹配两个或多个字符的单词......但他只想匹配长度超过 1 的单词的最后一个字符
【解决方案3】:

我认为这可能对你有用,尽管我确信有一个简写版本

[a-zA-Z0-9](?= [a-zA-Z0-9]|\.|,|$)

编辑:

\w(?= \w|\.|,|$)

【讨论】:

    猜你喜欢
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多