我在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
最佳答案
您缺少/u
修饰符。
查找价格值0,00之后,您的正则表达式将比较空格之间的单个字符(.?)
。但是,欧元符号€
通常占用两个字节。这仅适用于UTF-8模式。