0

これが適切に表現されているかどうかはわかりませんが、例を次に示します。

次のような数百行が得られました。

word1.word2.word3.1.09
word1.word2.2.14
word1.word2.word3.word4.3.22
word1.1.09

そして、それらを次のように変換したい:

word1 word2 word3 1.09
word1 word2 2.14
word1 word2 word3 word4 3.22
word1 1.09

これまでのところ、それらと一致するこのポイントに到達しました:

(([a-z0-9]+).+)([0-9]+.[0-9]+)

通常は $1 $2 $3 の間隔をあけますが、この場合、$1 は最初の英数字テキストの複数回一致します。正規表現だけでこれを行うことはできますか、それとも後で別の言語で $1 を処理する必要がありますか?

4

1 に答える 1

1

あなたが与えた(おそらく発明された)サンプル入力の場合、これは機能します:

\.(?!\d{2}$)  # search string

" "           # replace string: a single space

つまり、これは削除したいピリオドを探し、それらをスペースに置き換えます。

説明:

\.     # look for a period, but ignore it if the negative lookahead matches:
(?!    # open negative lookahead
\d{2}$ # look for exactly two digits, at the end of the string
)      # close lookahead
于 2012-04-24T17:56:50.243 に答える