-1

3番目のアンダースコアとドットの間に英数字を追加したい(以下の例)

CSV_20121023000854Z_MMSC_35dbc3f813.csv

期待される出力:

35dbc3f813

このregixは問題を解決し(\_\w{15}\_\w{4}\_)(\w+)ますが、文字列のサイズが大きくなった場合に備えて、より柔軟にしたいと思います。ありがとう

4

4 に答える 4

3

どうしてこんなものじゃないの?

_([^_]+)\.csv

最後の下線との間のすべてをキャプチャします.csv

または、選択した言語で分割することもできます。

>>> s = 'CSV_20121023000854Z_MMSC_35dbc3f813.csv'
>>> s.split('.')[0].split('_')[-1]
'35dbc3f813'
于 2012-12-24T08:25:03.603 に答える
1
_(\w+)\.csv

正規表現は貪欲なパターンで機能し、パターンの一致を維持し、一致した最後のパターン(この場合は必要な文字列)を抽出します。

于 2012-12-24T08:27:56.320 に答える
0

アンダースコア間の文字列の長さを気にしない正規表現は次のとおりです。

^.*?_.*?_.*?_(\w+)\..*$

一致する部分にはアンダースコアを含めることもできます(3番目のアンダースコアの後に一致します)。ドットは、3番目の下線の前に表示できます。

動作例を次に示します。http: //regex101.com/r/jT9fR0

于 2012-12-24T08:28:05.037 に答える
0

入力文字列にアンダースコア文字が 3 つあると言いましたが、

1) _ 文字の間にいくつかの文字が存在することが確実な場合、正規表現は次のようになります。

.+?_.+?_.+?_(.+)\..+

2) そうでない場合、正規表現は次のようになります。

.*?_.*?_.*?_(.+)\..*

貪欲なオペレーターの後の疑問符は、オペレーターを消極的にします。

于 2012-12-24T08:37:54.473 に答える