繁体   English   中英

正则表达式匹配多个模式

[英]Regex to match multiple patterns

我正在尝试匹配以下模式:

A-Test!1.2
A-Test
ATest
A-Test!1.2.3

在下面的文字中:

 [A-Test!1.2]    [xyz]      [def]
 [A-Test]    [xyz]      [def]
 [ATest]    [xyz]      [def]
 [A-Test!1.2.3]    [xyz]      [def]

我试过我的手@正则表达式

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

但它只匹配一行:

在此处输入图像描述

您能否指导如何完成所有线路的匹配?

使用? 对于可选模式

我假设[]框之间的区别是搜索的字符串必须以大写字母开头,而部分来自! 以后是可选的。 您可以使用? 在它后面。

您可以使用此正则表达式来查找示例文本:

\[([A-Z][A-Za-z0-9-]+(![\d.]+)?)\]

看这里玩它:
https://regex101.com/r/5ekTkJ/1

您可以拼出所有模式部分,例如

(?<=\[)[A-Z]-?[A-Za-z]+(?:!\d+(?:\.\d+)*)?(?=])

请参阅正则表达式演示 详情

  • (?<=\[) - 一个积极的向后看,需要一个[立即在左侧的字符
  • [AZ] - 大写字母
  • -? - 一个可选的-
  • [A-Za-z]+ - 一个或多个字母
  • (?:?\d+(:.\?\d+)*)? - 可选组匹配
    • ! - 一个! 字符
    • \d+(?:\.\d+)* - 一位或多位数字,然后出现零次或多次. 和一位或多位数字
  • (?=]) - 一个积极的前瞻,需要一个]字符立即在右侧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM