我正在尝试使用UIPATH中的regex从文本字符串中提取特定数字。正则表达式适用于文本中没有冒号的所有情况。
我正在搜索单词EWO
(带或不带:
)。即EWO
或EWO:
然后,我需要这个单词后面的6个数字。
我用完了后续操作,直到发现可能存在冒号: 要搜索的文字
TEST0203033 EWO 125399 WWT US QUOTE# 1235338.1
或
TEST0203033 EWO: 125399 WWT US QUOTE# 1235338.1
我尝试添加:?
以使搜索中的冒号为可选,但返回的响应很奇怪。
在字符串TEST0203033 EWO: 125399 WWT US QUOTE# 1235338.1
使用
(?<=EWO:?\s*)([0-9]+)
结果: 12
我期望的结果是125399
原创,不适用于冒号
(?<=EWO\s*)([0-9]+)
产生一些奇怪的结果
(?<=EWO:?\s*)([0-9]+)
答案 0 :(得分:0)
This RegEx可能有助于将目标输入分为两个单独的组,您可以在其中简单地使用$2
拨打所需的电话号码:
([EWO\:]+)\s([0-9]+)
您还可以通过删除组$1
或创建与this类似的完全匹配来进一步简化它:
(TEST[0-9]+\s)[EWO\:\s]+([0-9]+)\sWWT\sUS\sQUOTE#\s([0-9\.]+)
答案 1 :(得分:0)
这是您在Java中的处理方式,但是大多数引擎的regex模式应该相同。
String text1 = "TEST0203033 EWO 125399 WWT US QUOTE# 1235338.1";
String text2 = "TEST0203033 EWO: 125399 WWT US QUOTE# 1235338.1";
// Find EWO with an optional : following by 0 or more spaces.
// Then capture the number.
String regx = "EWO:? *(\\d+)";
Pattern pattern = Pattern.compile(regx);
Matcher matcher = pattern.matcher(text1);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
matcher.reset(text2);
if (matcher.find()) {
System.out.println(matcher.group(1));
}