我正在使用Salesforce
在Apex
中开发一个应用程序,我需要从其他Substring
中提取string
。这是原始String
:
String str = 'Product: Multi Screen Encoder Version: 3.51.10 (008) Order Number: 0030000a9Ddy Part Number: 99-00228-X0-Y-WW02-NA01 Comment: some comments';
我想提取 Part Number
的值,以便我使用Matcher
和Pattern classes
:
Pattern p = Pattern.compile('Part Number: (.+)\\s');
Matcher pm = p.matcher(str);
if (pm.matches()) {
res = 'match = ' + pm.group(1);
System.debug(res);
} else {
System.debug('No match');
}
但我得到No match
。
如何修复regex
以正确匹配我的String
答案 0 :(得分:2)
您需要在find
条件中使用matches
函数而不是if
。
Pattern p = Pattern.compile('Part Number: (\\S+)\\s');
Matcher pm = p.matcher(str);
if (pm.find()) {
res = 'match = ' + pm.group(1);
System.debug(res);
} else {
System.debug('No match');
}
\\S+
匹配一个或多个非空格字符。
或
Pattern p = Pattern.compile('Part Number: (.+?)\\s');