正则表达式匹配至少包含3个连字符的字符串
本文关键字:3个 连字符 字符串 包含 正则表达式 | 更新日期: 2023-09-27 18:01:39
我有一个电子邮件正文。它包含几行文本。我需要提取第一次出现的字符串
- 出现在特定文本 之后
- 包含至少3个破折号
虚线字符串的形状未知。它可以包含任意数字的字母和数字,即:AA3A-123-NNN-D或12-OOO-12455-AS
例如:
Lorem ipsum dolor sit met, consecent adiping elite。不节食是一种自由运动。
namenim nisl: aliquam ut fegigivitae
具体文本后,我需要搜索: Etiam rhoncus AAFA-12X-DDDD-12 metus risus更多文本:foo
目标语言是c#
我尝试过做一些类似([A-Za-z0-9]{5}-[A-Za-z0-9]{4}-[A-Za-z0-9]{3}-[A-Za-z0-9]{5})
的事情,但正如你在这里看到的,我需要设置字符串的形状,这并不总是已知的
您可以对['s'S]
使用延迟量词:
(?:Specific' text' after' which' I' need' to' search:)
['s'S]+?'K
('b'w+-'w+-'w+-'w+'b)
'b
是一个词边界,'K
从匹配中删除左边的所有内容。
看到演示regex101.com 。
如果您的表达式包含未知数量的字母和数字,您可以做的最好的是为您的正则表达式指定一个范围。我看到在你的例子中,最多的一个块有5个字符,最少的一个块有1个字符。
所以像这样的东西会捕获它,
([A-Za-z0-9]{1,5}-[A-Za-z0-9]{1,5}-[A-Za-z0-9]{1,5}-[A-Za-z0-9]{1,5})
我会选择(?:[a-zA-Z0-9]+-){3,}[a-zA-Z0-9]+
之类的东西。这将匹配3组或更多以破折号结尾的字母数字,后面跟着一个不以破折号结尾的字母数字。