Salesforce 使用正则表达式从字符串中提取子字符串

Salesforce extract substring from string with regex

我正在使用 ApexSalesforce 中开发一个应用程序,我需要从其他 string 中提取一个 Substring。这是原文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

您需要在 if 条件中使用 find 函数而不是 matches

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+ 匹配一个或多个非 space 字符。

Pattern p = Pattern.compile('Part Number: (.+?)\s');