用Regex来捕获带有两个规则的字符串

问题描述 投票:1回答:1

我有以下的regex,它应该在第一个短语中捕获1个组,在第二个短语中捕获3个组,但由于某些原因,当我在右边的两个组中添加可选的组时,它没有捕获字符串一。

regex (不区分大小写)

(^(?<FULLTEXT>.*))\s?(?:(?<AREA>[a-z]{4,4}).(?<SQRM>[\d]+))$

短语

MASTER BEDROOM

LIVING ROOM LVRM 103

词组将永远是:1-全文2-以area结尾--这是4个字符的字符串(总是)+SQRM 3位数(总是)。在这之前的都是全文。

第2句话就抓住了。FULLTEXT - LIVING ROOMAREA - LVRMSQRM - 103。

句子1只捕捉到FULLTEXT,但它什么都没捕捉到......。

感谢任何建议。

regex regex-group
1个回答
1
投票

您可以使用

^(?<FULLTEXT>.*?)\s*(?:(?<AREA>[a-z]{4})\s*(?<SQRM>\d+))?$

搜索引擎演示

详细内容

  • ^ - 弦首
  • (?<FULLTEXT>.*?) - 组 "FULLTEXT":除换行符外的任何0或更多的字符,尽量少用。
  • \s* - 0+空格
  • (?:(?<AREA>[a-z]{4})\s*(?<SQRM>\d+))? - 一个可选的序列
    • (?<AREA>[a-z]{4}) - "AREA "组:四个字母
    • \s* - 0+空格
    • (?<SQRM>\d+) - 组 "SQRM"。1+位数
  • $ - 字符串的末端。
© www.soinside.com 2019 - 2024. All rights reserved.