0

私の現在の正規表現は、最初のハイフンの前にすべてを見つけることで機能します。

(?<=^)(.*?)(?=-). たとえば、次の文字列の場合:

これは私が欲しいテキストです - 欲しくないテキスト - もっと欲しくないテキスト

「This is the text I want」を見つけます。しかし、次の文字列では:

これは私が欲しいテキストです - 欲しくないテキスト - もっと欲しくないテキスト

「これは」しか見つかりません。

空白を含む最初の「 - 」までのすべてを検索するように正規表現を変更したいと考えています。また、ハイフンを「~」と交換できるようにしたいと考えています。だから私は最初の「 - 」または「 ~ 」まですべてを見つけたいと思っています。私はそれを次のように変更しようとしました:

(?<=^)(.*?)(?=(\s-\s|\s~\s)) ただし、これは機能していません。誰でも私を正しい方向に向けることができますか?

4

1 に答える 1

2

なぜ後読みと先読みを使うのですか?式全体が不必要に複雑であり、%標準ではありません。

^(.*?)(?: [-~] |$)

あなたが望むことをします。行の先頭から始まり、「スペースを含むハイフンまたはチルダ」または行末までのすべてに一致します。これ(?:...)は非キャプチャ グループであり、2 つの選択肢をグループ化するために必要です。

于 2012-05-06T03:26:19.010 に答える