正規表現について質問する

WBOY
WBOYオリジナル
2016-06-23 14:14:17972ブラウズ

最後の句読点またはスペースに基づいて次のコンテンツを削除する正規表現を作成するにはどうすればよいですか?


ディスカッションへの返信 (解決策)

まずエンコーディングとは何かについて話しましょう。句読点には全角が含まれますか?つまり、句読点はどの国語を指すのでしょうか?

基本形式
echo preg_replace('/(.+[ ]).+$/', '$1', 'ab c d'); //a b c

全角、半角、スペースも含む

全角を含めるのは複雑でしょう... Unicode 範囲のみを使用できるようです。誰かが良いアイデアを持っているかどうかを待ったほうが良いでしょう。誰かが直接置き換える良いアイデアを持っていますか?全角記号を対応する半角記号に置き換えますが、すべての半角記号が上記の規則的なパターンに一致するとは限りません。 。

基本形式
echo preg_replace('/(.+[ ]).+$/', '$1', 'ab c d'); //a b c

これはピリオドとスペースのみに一致します。何を書けばよいか聞いてください他の人に合わせたい場合は?たとえば、カンマ、疑問符、感嘆符などです。


基本形式
echo preg_replace('/(.+[ ]).+$/', '$1', 'a b c d'); //a b c

句読点やスペースがあるかどうか、別の質問があります。 、スペースを優先する必要があります。スペースまたは句読点のいずれかが最後に表示されるものが区切り文字として使用されます。


echo preg_replace('/(.+[ここに指定したいシンボルをリストします])[^ 前にリストしたものと同じ]+$/', '$1', 'a b c d');

注:

1.赤と青の部分は曖昧さをなくす必要があり、同じままでなければなりません
2. 青の部分の前にある ^ を見逃さないでください。これは除外するために使用されます
3. まだ問題が発生することが予想されますGBK エンコード (utf-8 の場合) /u 修飾子を追加すると期待通りになります

[ ] で区切る文字をすべてリストします

まあ、基本的には問題ありません、ありがとうございます 1! !

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。