Salesforce从带有正则表达式的字符串中提取子字符串

时间:2015-08-19 16:47:58

标签: regex string salesforce match apex

我正在使用SalesforceApex中开发一个应用程序,我需要从其他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 的值,以便我使用MatcherPattern 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

1 个答案:

答案 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');