のリストをマッチングは、私は正規表現を使用して次の文を解析する正規表現
(?<bullet>\(o\)\) (?<text>.+)
何I達成したいのは、text
グループの3つの試合、すなわち、
Multi
line
text
そして次に2回Single line text
となる。
ソリューションが先読み/背後の場合は、これをどのように使用するのですか?
ありがとうございました。
のリストをマッチングは、私は正規表現を使用して次の文を解析する正規表現
(?<bullet>\(o\)\) (?<text>.+)
何I達成したいのは、text
グループの3つの試合、すなわち、
Multi
line
text
そして次に2回Single line text
となる。
ソリューションが先読み/背後の場合は、これをどのように使用するのですか?
ありがとうございました。
あなたは次の(O)または入力で正規表現を使うのはなぜ
(?<bullet>\(o\)) (?<text>.*?)(?=\(o\)|$)
正規表現の末尾にa(o)またはEOFを追加するだけで、次の箇条書きまたはファイルの最後で切り取ることができます。私はあなたに正規表現を与えるためにどの正規表現を使用しているのかわかりませんが、その考えはそれにマッチすることです。
ここでは、通常の正規表現でEOFを一致させる方法は次のとおりです。 regex to match EOF
の終了を確認するために先読みを使用することができますすべて? 2つの場合があるようです - 行が行頭で始まるか始まらないか。もし弾丸で始まっているのなら、それをカットし、残りの行で新しいテキストオブジェクトを開始します。箇条書きで始まらない場合は、そのテキストを前のテキストオブジェクトに追加します。擬似コード:
text = []
i = -1
for line in data:
if line.starts_with('(o)'):
i += 1
text[i] = line[2:] # all characters in the line after the first three
else:
text[i].append(line)
ありがとう、それは動作しますが、私は特に正規表現を使用する必要があります。 – grizzly
残念です。私は正規表現を書くだけの言語と見なして、最も単純な正規表現以外のすべてを最後の手段として維持しようとします。正規表現の周りにいくつかの明確なコメントを入れてください。そうすれば、6ヶ月以内に戻ってくると解読する必要はありません。 –
魅力的な作品です。しかしアスタリスクの後の疑問符はどういう意味ですか? – grizzly
それは、その怠け者であるか不本意かを意味します。基本的に、一致するテキストの量は最小です。あなたはそれについてここで読むことができますhttp://www.regular-expressions.info/repeat.html –