带点分隔符的简单正则表达式

时间:2017-05-24 01:34:13

标签: regex

我试图从两种格式中的一种中提取两个字符串,结果是两个组。格式为:

val1.val2 - group1 should be "val1" and group2 should be "val2"

val2 - group1 should be "" and group2 should be "val2"

我最想出的是:

([^\.]*?)\.?(.+)

但是第一组的懒惰运算符基本上使得第二组在有“。”时捕获整个字符串。在它。

1 个答案:

答案 0 :(得分:1)

我很确定这有效:

(?:([^.]*)\.)?(.+)

它有:

  • 一个可选的非捕获组,其中包含:
    • 第1组:文字点之前的文字
    • 一个字面点
  • 第2组:任意数量的文字

如果缺少点,则不存在可选的非捕获组(并且组合1也不存在),因此所有文本都将进入组2.如果该点存在则则组1和组2是两者都填满了。

感谢@Dandan的改进