我正在寻找一种方法来匹配一行中的倒数第二个单词,例如:
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+$))(?:.+?)
不过,您可能需要对您可能拥有的特殊字符采取一些措施。