【发布时间】:2017-09-18 07:34:25
【问题描述】:
问题是匹配下面的内容
现代 E&C Hillstate (KOR) - 兴国人寿保险粉蜘蛛 (韩国)
目前,捕获组已经部分工作,虽然它会在有时停止
.*
当前的正则表达式为:
(hyundai){0,1}\s*(E&C){0,1}\s*(hillstate){0,1}.*(Heungkuk){0,1}.*(invalid){0,1}.*`
请假设忽略大小写已到位。有了上面,它会像这样匹配
第 1 组长度:7 现代
第 2 组长度:3 工程建设
第 3 组长度:9 山州
第 4 组长度:0
第 5 组长度:0
任何建议将不胜感激。
另一种情况是
- 现代 E&C Hillstate (KOR) v Heungkuk life insurance pink spiders (KOR)
- 现代 E&C Hillstate 诉 Heungkuk 人寿保险粉蜘蛛
- 现代E&C Hillstate-兴国人寿保险粉蜘蛛
问题是,在我这边,我们有类似现代 E&C Hillstate v Heungkuk 之类的东西,然后它被分解成碎片。
然后将这些部件与由第三方提供的字符串进行比较,例如现代 E&C Hillstate (KOR) - Heungkuk life insurance pink spiders (KOR)。在这种情况下,将指出它是否匹配。
【问题讨论】:
-
第一个
.*之后的所有内容都是可选的。因此,最喜欢的比赛将把所有东西都放入贪婪的.*。让你的正则表达式“更紧密”。 -
@Yunnosch OP 确实说匹配不区分大小写
-
请注意,
{0,1}可以缩短为?。 -
所有正则表达式部分都是可选的。这不是一个好主意。为什么不使用
if (s.IndexOf("hyundai", StringComparison.OrdinalIgnoreCase) >=0) { /*hyundai is found!*/ }... 并将代码用于其他子字符串?你在这里的最终目标是什么?由于您没有匹配整个单词,因此使用正则表达式似乎不合适,特别是如果您只是检查子字符串是否存在。 -
你所有的例子都以
hyundai E&C Hillstate开头,没有一个包含invalid。那么为什么您的正则表达式允许hyundai和E&C和Hillstate是可选的?为什么你的正则表达式包含invalid?
标签: c# regex regex-group