私は最初の重要な正規表現 (Python で使用するため) を構築しようとしていますが、苦労しています。
言語 X (英語ではない) の単語が最小限の「構造」のシーケンスであると仮定しましょう。各「構造」は次のようになります。
An independent vowel (basically one letter of the alphabet)
A consonant (one letter of the alphabet)
A consonant followed by a right-attaching vowel
A left-attaching vowel followed by a consonant
(Certain left-attaching vowels) followed by a consonant followed by (certain right-attaching vowels)
たとえば、この 3 文字の単語:
<a consonant><a left-attaching vowel><an independent vowel>
は有効な単語ではなく、正規表現と一致するべきではありません。左側に付く母音の右側に子音がないためです。
私はすべての Unicode 範囲を知っています - 子音、独立母音、左接母音などの Unicode 範囲。
これが私がこれまでに持っているものです:
WordPattern = (
ur'('
ur'[\u0985-\u0994]|'
ur'[\u0995-\u09B9]|'
ur'[\u0995-\u09B9(\u09BE|[\u09C0-\u09C4])]|'
ur'[(\u09BF|\u09C7|\u09C8)\u0995-\u09B9]|'
ur'[(\u09BF|\u09C7|\u09C8)\u0995-\u09B9(\u09BE|[\u09C0-\u09C4])]'
ur')+'
)
動いていない。それを機能させることとは別に、私には3つの特定の問題があります。
- 正規表現を複数の行に分割する必要があります。そうしないと、コードが見栄えが悪くなります。どうすればいいですか?
- コードの読みやすさと Unicode 範囲の複数回の入力を防ぐために、Unicode 範囲に「名前を付ける」ために何らかの文字列置換/テンプレートを使用したいと思います。
- (これは非常に難しいようです) 許容される最小限の「構造」のリストは、後で拡張する必要があります。リスト内のすべての許容される構造に対して機能するように、正規表現内に一種の「ループ」メカニズムを設定する方法はありますか?
どんな助けでも大歓迎です。これは初心者には非常に複雑に思えます。