私はここを見て、私が理解していることから、次の正規表現は単に「任意のユニコード文字シーケンス」を意味します。誰かがこれを確認できますか?
現在の正規表現: /^(?>\P{M}\p{M}*)+$/u
また、マニュアルを読むと、
a) \P{M} = \PM
b) (?>\PM\pM*) = \X
これら 2 つのものが手元にあるので、正規表現を次のように簡略化できませんか?:
提案された正規表現: /^\X+$/u
いまだによくわからないところ...
^ # 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}*
同等です。
はい、\P{M}\p{M}*
に簡略化できますが、(私の経験では)すべて\X
の言語がサポートされているわけではなく、より頻繁にサポートされています。\X
\P{M}
\p{M}
たとえば、Java と .NET の正規表現エンジンはサポートしていません\X
(もちろん、Perl はサポートしています...)。
詳細については、http: //www.regular-expressions.info/unicode.htmlを参照してください。