-1

我想在第三个下划线和点之间添加额外的字母数字,示例如下

CSV_20121023000854Z_MMSC_35dbc3f813.csv

预期输出:

35dbc3f813

这个正则表达式可以解决问题(\_\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+)\..*$

匹配部分甚至可以有一个下划线(在第三个下划线之后匹配)。点可以出现在第三个下划线之前。

这是它的一个例子: http ://regex101.com/r/jT9fR0

于 2012-12-24T08:28:05.037 回答
0

您说过输入字符串中存在三个下划线字符,

1)如果您确定某些字符会出现在 _ 字符之间,那么正则表达式应该是:

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

2)如果不是那么正则表达式应该是这样的:

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

贪婪的运营商后面的问号让运营商不情愿。

于 2012-12-24T08:37:54.473 回答