匹配捕获组的部分与Perl Regex

时间:2014-12-08 17:29:09

标签: regex perl capture-group

我有一个结构如下的数据文件:

FNAME:LNAME:USERNAME

我试图通过使用正则表达式来检查格式是否对此数据文件的每一行有效。

我想这样做的方式如下,除了我不确定如何设置用户名部分的表达式。

if(/([A-Z]):([A-Z]):_______/)

$ 1将给出整个名字,$ 2将给出整个姓氏。用户名由名字的第一个字母和姓氏的前四个字母组成。我不确定如何用捕获组检查这个。有没有办法让我只检查1美元和2美元的一部分而不在正则表达式本身之外创建变量?

1 个答案:

答案 0 :(得分:3)

这样的东西
/^([A-Z])[A-Z]+:([A-Z]{4})[A-Z]+:\1\2$/
  • ([A-Z])第一个上尉小组。包含FNAME

  • 中的第一个字符
  • [A-Z]+匹配其余字符

  • ([A-Z]{4})第二个字符。包含4

  • 中的LNAME个字符
  • [A-Z]+匹配其余字符

  • \1\2第一和第二个捕获组的内容构成USERNAME部分