Salesforce 使用正则表达式从字符串中提取子字符串
Salesforce extract substring from string with regex
我正在使用 Apex
在 Salesforce
中开发一个应用程序,我需要从其他 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
的值,所以我使用 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
您需要在 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');
我正在使用 Apex
在 Salesforce
中开发一个应用程序,我需要从其他 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
的值,所以我使用 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
您需要在 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');