1
2-(Диметиламино) этанол (2-(Dimethylamino)ethanol): инструкция по применению, противопоказания и состав

私はこの文字列を持っています。数字と前後のすべての記号でキリル文字の名前を解析したいと思います2-(Диметиламино)(2-(Dimethylamino)ethanol)

毎回名前が違うけど、

13-цис-Ретиноевая кислота (13-cys-Retinoic acid): инструкция по применению, противопоказания и состав

現在、キリル13-цис-Ретиноевая кислота文字は 、ラテン文字は(13-cys-Retinoic acid)

私はそれを解析するためにこれを使用しています:

preg_match ('/[\p{Cyrillic}]+/u', $chemical_text, $matches);

preg_match('/[\p{Latin}]+/u', $chemical_text, $matches);

私が知らないのは、それらの名前を記号がどのように見えるかなどで解析する方法-, _, @, (, )です

何か案は?

4

1 に答える 1

2

シンボルについてそれほど気にする必要はないでしょう。このタイプの入力は、次の方法で解析できます

/(.*)\s+\((?=\P{Cyrillic}+:)([^:]*)\)/u

最初のキャプチャ グループ(.*?)は、スペースと括弧の区切り文字が表示されるポイントまで、貪欲にキリル文字に一致します。次に、肯定的な先読み(?=\P{Cyrillic}+:)により、その時点から次の二重コロンまで、キリル文字がまったくないことが保証されます。次に、2 番目のキャプチャ グループ([^:]*)は、英語名を区切る括弧とダブルコロンの組み合わせまで、可能な限りすべてを貪欲に照合します。

更新:代替

/(\P{Latin}*)\s+\((\P{Cyrillic}*)\)\P{L}*\s+/u

この正規表現は、フォームのテキストに一致します

<cyrillic> <whitespace> (<latin>) [symbols] <whitespace>

where[symbols]はオプションで表示できます。おそらく、ある種の入力には適しているでしょう。

于 2013-10-02T08:16:46.983 に答える