1

私はここを見て、私が理解していることから、次の正規表現は単に「任意のユニコード文字シーケンス」を意味します。誰かがこれを確認できますか?

現在の正規表現: /^(?>\P{M}\p{M}*)+$/u

また、マニュアルを読むと、

a) \P{M} = \PM

b) (?>\PM\pM*) = \X

これら 2 つのものが手元にあるので、正規表現を次のように簡略化できませんか?:

提案された正規表現: /^\X+$/u

いまだによくわからないところ...

4

2 に答える 2

2
^            # start of string followed by 
(?>          # an independent (non-backtracking) capturing group containing 
    \P{M}    # a single unicode character which is not in the `Mark` category
    \p{M}*   # 0 or more characters in the `Mark` category
)+           # with this capturing group repeated 1 or more times
$            # the end-of-line

一方^\X+$、キャプチャ グループは含まれていません。それ以外は\P{M}\p{M}*同等です。

于 2012-06-20T14:17:09.230 に答える
2

はい、\P{M}\p{M}*に簡略化できますが、(私の経験では)すべて\Xの言語がサポートされているわけではなく、より頻繁にサポートされています。\X\P{M}\p{M}

たとえば、Java と .NET の正規表現エンジンはサポートしていません\X(もちろん、Perl はサポートしています...)。

詳細については、http: //www.regular-expressions.info/unicode.htmlを参照してください。

于 2012-06-20T14:18:35.703 に答える