2

私が次のテキストを持っていると仮定します:

Lorem ipsum dolor sit amet、consectetur adipisicing elit、sed do eiusmod ,,,,,, tempor incididunt ut Labore et doloremagnaaliqua。Ut enim ad minim veniam、quis ,,,,, nostrud exercitation ullamco [、] Laboris nisi ut aliquip ex eacommodoconsequat。Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu [,,,,,] fugiatnullapariatur。Excepteur sint {,,} occaecat cupidatat non proident、sunt {,,,,,} in culpa qui officia deserunt mollit anim id ,,,,,estlaborum。

次のパターンでテキスト内のすべてのカンマを選択したい

(\,{2,99})

[]ただし、たとえば、カンマのみを選択するなど、特定の文字間にのみ{}適用される同じフィルターを指定したいと思います[}

これが失敗する場所:

(\[|\{)  (\,{2,99})  (\]|\})

そして、以下は期待どおりに機能します

(\{)  (\,{2,99})  (\})  |  (\[)  (\,{2,99})  (\])

(\,{2,99})つまり、この試合を別の選択で囲みたいときは、毎回再入力する必要があります。

variable同じコマンド内で後で適用できるaを宣言する方法はありますか?お気に入り:

$1=(\,{2,99}) | (\{$1\}) | (\[$1\])

これが理解しやすいことを願っています。私の場合、定期的な遠征は本当に新しいことなので、ご容赦ください。これらの宣言はすべてあなたにとってひどいものに見えるかもしれません:)

ここにひどく書かれていることに気づき、より良い方法をお勧めしていただければ幸いです。

また、すべてのコンマをキャッチするこの例は、同じコマンド内で少しのコードを何度も再利用したいことを示すためのものでした...その単純なセレクターを、自分ではできない巨大なものに置き換えることができます。毎回再入力したいですか?

前もって感謝します

4

3 に答える 3

1

変数を使用して、正規表現で数回連結できます。

于 2011-06-21T13:05:22.773 に答える
0

解決策は、データの品質にも依存します。たとえば、「[,,,,}」が表示されないことを保証できる場合は、複雑な正規表現は必要ありません。

[\[\{](,{2,})[\]\}]

それならそれをします。また、カンマのみを選択したかったので、この正規表現ではカンマの前後に角かっこのみを使用しました。

于 2011-06-21T14:25:47.887 に答える
0

これはトリッキーでした。動作するはずですが、使用している正規表現エンジンによって異なる場合があります。それは恐ろしいように見えますが。

(?=[{[])(\{)?(\[)?(,{2,})(?(1)\})(?(2)\])

説明:

(?=[{[])    #Look ahead to check that the next charactor is in your set of opening brackets
             # but do not capture the charactor yet.

(\{)?        #Try to capture a {

(\[)?        #Try to capture a [

(,{2,})      #The commas (or whatever else you like).
             #Note that these are only writen once.

(?(1)\})     #If you previously captured the { then also capture a }

(?(2)\])     #If you previously captured the [ then also capture a ]
于 2011-06-21T13:29:44.663 に答える