如何使用正则表达式拆分字符串?

时间:2014-03-13 15:21:56

标签: regex perl

我有以下字符串:

abcdefgh1234.1.1.t1111-1.16.2222.1-1.t67_76.txt

如何使用正则表达式将其拆分为以下部分?

abcdefgh
1234.1.1
t1111
1.16.2222.1-1
t67_76.txt

3 个答案:

答案 0 :(得分:0)

在您的输入字符串上,这有效:

^([a-z]+)(\d+(?:\.\d+){2})\.([a-z]\d+)\-(\d+(?:\.\d+){3}\-\d)\.([a-z][\d_]+.\w+)$

Regular expression visualization

Debuggex Demo

您想要的每个元素都在其自己的捕获组中。

答案 1 :(得分:0)

你还没有指定如何分割,所以这是一个猜测:

my @fields = /^(\D+)([\d.]+)\.([^-]+)\-([\d.\-]+)\.(.*)\z/ or die;

答案 2 :(得分:0)

如果那是你要分割的唯一字符串,或者每个字符串都是以这种方式格式化的(分裂对我来说似乎很随意),这样做:

([a-z]+)([\d\.]+)\.(\w+)-([\d\.-]+).([\w+\.]+)

提取匹配的群组,您已完成。

$1是第一部分,$2是第二部分,依此类推。