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」を置きます。

さらに (.+?) が正しいのだろうか。代わりに (.*) を試しましたか?

バーニンレオ

于 2012-10-11T20:28:00.593 に答える