0

所以我一直在尝试构建一个基本上从 txt 文件中提取列表的脚本。

现在列表不是问题。它更是如此。我在用着

例如。

如果一个 1 设备的输出是 ABC(R)1234,我正在使用预匹配来查找 ABC,然后从中切出 ) 并获取我需要的 1234。

但我刚刚注意到另一个设备,输出 ABC 1234,所以我的剪辑不起作用。

我可以像这样做 2 个 preg_matchs

preg_match('/ABC/',$match){ 等对吗?

但那是我的削减..

那么我说好为什么我不为 ABC(R) 和 ABC 做预赛?

好吧,它不喜欢 (R) .. 我怎样才能匹配 ABC(R) 和 ABC 的 preg_match。

4

1 回答 1

0

?您可以使用量词使正则表达式的一部分成为可选的。像这样:

$pattern = '/ABC(?:\([^)]+\))?\s*/';

这里([^)]+)的部分(读作“匹配一个左括号,然后是任何不是结束括号,然后是结束括号)被放置到一个非捕获组(带有(?:...))符号中,它带有?量词。换句话说,如果匹配,它将捕获所有匹配的文本,但如果它不存在,它甚至不会注意到。

您可以使用它preg_replace来切断这些部分(演示):

$test1 = 'ABC(R)1234';
$test2 = 'ABC 5678';
echo preg_replace($pattern, '', $test1), PHP_EOL; // 1234
echo preg_replace($pattern, '', $test2), PHP_EOL; // 5678
于 2013-06-03T13:55:38.173 回答