正则表达式在德国管道前获取文本|fbf4cf3c-ebfe-43c8-aaf9-6811bd3488b0

问题描述

我有一个以这种格式给出的文本

Germany|fbf4cf3c-ebfe-43c8-aaf9-6811bd3488b0

获得 Germany 的 Regex 必须如何?获得 fbf4cf3c-ebfe-43c8-aaf9-6811bd3488b0 的 Regex 必须如何?

我使用 Nintex Workflow 并尝试了 .+?(?=\|),但它无法正常工作。

解决方法

您可以使用 2 个捕获组,您可以使用 $1$2 获取匹配项:

(\w+)\|([a-f0-9]+(?:-[a-f0-9]+)+)\b
  • (\w+) 捕获组 1,匹配 1+ 个字字符
  • \| 匹配 |
  • ( 捕获 第 2 组
    • [a-f0-9]+ 匹配 1+ 个字符 a-f 0-9
    • (?:-[a-f0-9]+)+ 重复 1+ 次匹配 - 和 1+ 个字符 a-f o-9
  • )\b 关闭第 2 组,后跟单词边界以防止部分匹配

查看regex demo

要获得单独的匹配项,您还可以使用环视。

Match 1 个或多个单词字符,使用正向预测在右侧断言 | 和类似公会的格式:

\w+(?=\|[a-f0-9]+(?:-[a-f0-9]+)+\b)

或者 match 一个类似公会的模式,使用正向后视来断言一个单词 char 后跟一个 |

(?<=\w\|)[a-f0-9]+(?:-[a-f0-9]+)+\b

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...