0

長いテキストがあり、他の 2 つの単語の間に 1 つの単語を分離する必要があります。

これは私が持っているテキストの一部です:

2012-05-05 19:31:44 status config-files gwibber-service 3.4.0-0ubuntu4
2012-05-05 19:31:44 status not-installed gwibber-service <none>
2012-05-05 19:31:45 status installed gir1.2-notify-0.7 0.7.5-1
2012-05-05 19:31:45 remove gir1.2-notify-0.7 0.7.5-1 <none>
2012-05-05 19:31:45 status half-configured gir1.2-notify-0.7 0.7.5-1
2012-05-05 19:31:45 status half-installed gir1.2-notify-0.7 0.7.5-1

ここで、たとえば次のような単語と数字を除くすべての単語と数字を選択したいと思います。

gir1.2-notify-0.7

だから私はそれらを「」に置き換えます(実質的に他のすべての単語と数字を削除します)..私が考えたところ、それらを分離するために使用できる2つのキーワードがあります:「削除」と「{いくつかの数字と.} <なし>」すべてそれらの間は除外する必要があります...

あなたがそれを手に入れたことを願っています。手伝ってくれてありがとう。

4

3 に答える 3

1

これを試して:

(?<=remove)\s+([\w\.\-]+)\b

positive look-behindこれは単純なアプローチに他なりません。理解を深めるには、こちらをご覧ください

于 2012-05-06T13:21:16.600 に答える
0

あなたの質問を本当に理解しているかどうかはわかりませんが...

次の正規表現を使用すると、 remove(.*)<none>$ $1「 gir1.2-notify-0.7 」が得られます

単一のステートメントで $1 を除くすべてを選択/置換できるとは思いません。おそらく、正規表現が返す結果に基づいて処理するコードをロールバックする必要があります。

于 2012-05-06T12:33:35.093 に答える
0
r"\w[\w-]*[\.]{1}\w[\w-\.]*"  /// -> it will match all strings of the form -> 

[英数字1文字][(0個以上の英数字または"-")].[英数字1文字][(0個以上の英数字または"-") ")]

girl1.2-notify-0.7 には一致しますが、gwibber-service には一致しません。

于 2012-05-06T12:12:15.337 に答える