通过正则表达式匹配句子中的倒数第二个单词?

通过正则表达式匹配句子中的倒数第二个单词?

我正在寻找一种方法来匹配一行中的倒数第二个单词,例如:

123 Smith St Melbourne VIC 3000

我只想匹配“ VIC”。有人有我可以使用的正则表达式吗?

答案1

根据你对“单词”的定义,你可以使用:

  • 单词由一个或多个非空格的字符组成
    • \S+(?=\h+\S+$)将匹配 1 个或多个非空格,后跟 1 个或多个水平空格,然后是 1 个或多个非空格
  • 一个单词由一个或多个字母组成
    • [a-zA-Z]+(?=\h+[a-zA-Z]+$)
  • 一个单词由一个或多个字母数字字符组成
    • [a-zA-Z0-9]+(?=\h+[a-zA-Z0-9]+$)
  • 任何语言中,单词都是一个或多个任意字母
    • \pL+(?=\h+\pL+$)
  • 单词是任何语言中的一个或多个任意字母或数字
    • [\pL\pN]+(?=\h+[\pL\pN]+$)

答案2

匹配从末尾开始的第二个词的用法:(?!(\w+\s\w+$))|(?:.+?)

代替除了倒数第二个字以外的所有字都使用:(?!(\w+\s\w+$))(?:.+?)

不过,您可能需要对您可能拥有的特殊字符采取一些措施。

相关内容