所以我一直在尝试构建一个基本上从txt文件中提取列表的脚本。
现在列表不是问题。它更像是alg。我正在使用
例如,。
如果一个1设备的输出是ABC(R)1234我正在使用preg匹配来查找ABC然后切断)并取1234这就是我需要的。
但我刚注意到另一台设备,输出ABC 1234,所以我的剪辑不起作用。
我可以像这样做2个preg_match
preg_match(' / ABC /',$ match){等对吗?
但那是我的剪裁..
所以我说好了为什么我不为ABC(R)和ABC做一个preg匹配?
好吧它不喜欢(R)..我如何匹配ABC(R)和ABC的preg_match。
答案 0 :(得分:0)
您可以使用?
量词使正则表达式的一部分可选。像这样:
$pattern = '/ABC(?:\([^)]+\))?\s*/';
这里([^)]+)
部分(读作'匹配一个左括号,然后任何不是结束的,然后是结束的那个)被放入一个非捕获组(用(?:...)
)表示法,有?
量词的人坚持下去。换句话说,它会捕获所有匹配的文本,如果匹配,但甚至不会注意到它是否存在。
您可以将其与preg_replace
一起使用以关闭这些部分(demo):
$test1 = 'ABC(R)1234';
$test2 = 'ABC 5678';
echo preg_replace($pattern, '', $test1), PHP_EOL; // 1234
echo preg_replace($pattern, '', $test2), PHP_EOL; // 5678