0

我对 php 中的正则表达式有疑问。

得到以下模式:^\s*(\d{8})\s+(.+?)\s+(\d+,\d{2})\s.?\s(.*)$

我的搜索字符串是这样的: 搜索字符串示例 12345678 这是一个带有一些特殊字符的产品描述,例如 ® 16,00 € 也许这里有一些文字

我使用这个 php 代码:

$regex = '/^\s*(\d{8})\s+(.+?)\s+(\d+,\d{2})\s.?\s(.*)$/';
echo preg_match($regex, $input);

但是没有匹配!

java 或 c# 中的相同正则表达式模式有效!你能解释一下我做错了什么吗?

这里有一些在线正则表达式测试器:

PHP:http ://regexp-evaluator.de/evaluator/d721ca1ed32d76db960262ba7298cff3/#ergebnis

Java:http ://www.regexplanet.com/advanced/java/index.html

4

2 回答 2

5
于 2012-10-11T20:29:31.597 回答
0

如果不在多行模式下,$ 仅匹配完整字符串的结尾。如果 $input 中有换行符或更多数据,这可能是原因。在这种情况下,只需在最后的分隔符后面加上一个“m”。

此外,我想知道 (.+?) 是否正确。您是否尝试过 (.*) ?

BurninLeo

于 2012-10-11T20:28:00.593 回答