2017-07-05 9 views
-1

辞書テキストファイルを使用して(サブライムテキストエディタを使用して)サイコロを作成しようとしています。最後に)の後に空白が最初に出現する必要があります。区切り記号を付けてGoogleシートにインポートできます。括弧が最後に出現した後に空白が最初に出現する

例えば、以下:

abierto (masculine) open 

abjaso (masculine); abjasio (masculine) Abkhaz 

abogado (masculine); abogada (feminine); notario (masculine) lawyer 

は(_区切り文字に注意)であるべき:

abierto (masculine)_ open 

abjaso (masculine); abjasio (masculine)_ Abkhaz 

abogado (masculine); abogada (feminine); notario (masculine)_ lawyer 

私はこれを実現するにはどうすればよいですか?


EDIT:私は/\)[^\)]+$/gを試してみた - 文字は貪欲、文字列の末尾に、))は、1つまたは複数の非続い取得する...しかし、それは唯一の結果を検索します。

答えて

1

あなたはあなたの望ましい結果を与える、)_でこれを置き換え、その後、)の最後の出現を見つけるために

\)(?!.*\)) 

を使用することができます。ここST3からの結果は

enter image description here

説明:だから、あなたは正規表現a(?!b)を例えばと「AB」にそれをテストしている場合

\) # find ")" 
( # OPEN capturing group 1 
    ?! # negative lookahead, aka "do not match" 
    .* # anything until 
    \) # character ")" 
) # CLOSE capturing group 1 

、「交流」と「広告」、それが一致します「が一致しないものよりも先にある場合は、「a」だけがとなります。 "ac"と "ad"の "a"はここで一致しています。しかし、 "ab"ではありません。ここでは、)はコメントから)

まで、あらゆるものに選択される:

は、あなたはこれを説明するのに役立つことはできますか?また、なぜこれがRegex101で動作しないのか説明できますか? regex101.com/r/GFwrn5/1

これは、グローバル/gフラグを有効にしていないためです。それを有効にすると、それは仕事をします。

/(.*\))/

をし、その後でそれを置き換える::\tは(タブのためにすることができますSE 4である

$1_\t 

あなたが合うように、この正規表現を使用して、最後の)を得るために貪欲試合.*\)を使用することができます

+0

これを説明することを教えてください。また、なぜこれがRegex101で動作しないのか説明できますか? https://regex101.com/r/GFwrn5/1 – Growler

+0

@Growlerが説明付きで更新されました。あなたがもっと知りたいのであれば、否定的な先読み[ここ]をチェックすることができます(http://www.regular-expressions.info/lookaround.html) – KarelG