正则表达式:保留文本后的最后一个词

Regex: Keep last word after text

Tommy Hilfiger Men Teal Blue Analogue Watch TH1791293_BBD

我需要拆分它并保留最后一部分,即

TH1791293_BBD

问题是目标字符串之前的部分,即

Tommy Hilfiger Men Teal Blue Analogue Watch

可以是不同的长度。

总结: 我需要使用空格拆分文本并保留数组的最后一部分。 附加约束: 我需要在一行中完成它而不能将对象保存在变量中(像这样):

a= $e.split(" "); output= a[a.length()-1]

欢迎解决此问题。 我刚开始使用 Parsehub 进行数据解析。

如果你只需要字符串的最后一部分作为输出,甚至不需要拆分,你可以使用以下 并替换为 </code> (第一个匹配组)来实现这一点</p> <pre><code>^.*?(?<=\s)([^\s]+)$

Demo

正则表达式实际上会在行的最后一个 space 之后查找其中没有 space 的所有内容(这是通过检查单词是否在行尾之前来完成的并通过在 space 字符上使用正前瞻)

在 java 中:string.replaceAll("^.*?(?<=\s)([^\s]+)$", "");

使用 Extract 工具,您可以使用

(\S+)$

这里,

  • (\S+) - 匹配并捕获除空格以外的一个或多个字符到第 1 组
  • $ - 在字符串的末尾。

注意你应该使用捕获组,参见ParseHub Help Center reference:

You must use captures "()" for any text you want included in your results. Optionally, you can turn on "extract all occurrences". This will make the extract command return a list of matches.