2017-09-03 110 views
0

我想解决这个问题,其中相同的短语存在于一行或多行,但我只想匹配正确的形式。正则表达式有助于匹配表达式并排除某些匹配

在我来说,我想在一个行块中的所有情况下的ID

我行块看起来像这样

!# Reason: Reason in Detail 
!# ACL: Rule 
!# Modifier: Mod1 - 11/17/05 - ccc REMEDIATION: added expiration date 
!# Modifier: Mod2 - 06/21/06 - qqq REMEDIATION: changed expiration date 
!# Modifier: Mod3 - 4/22/2008 - renewed for 1 yr per REQ<TEST1XX> 
!# Requester: Req1 
!# Group: imp1 
!# Exp. Date: 4/22/2009 
!# Reference Case : http://case/C1TEST1TEST1XXX 
!# Case : C1TEST1TEST1TEST2 
!# Case # C1TEST1TEST1TEST1X 

我使用正则表达式\bCase :.*\b\W到所有的情况下匹配,但一些行块包含一个我想避免的参考案例。不知道如何做到这一点。任何帮助,将不胜感激。

我正则表达式小提琴:https://regex101.com/r/HA3zEe/1/

+2

将为您的目的检查!#开始点工作。如果你不想包含它,可以使用组或积极向后看。例如:'(?<=!#)案例:。* \ b \ W' –

回答

1

如果您可以使用您的正则表达式分组值,您可以使用这样的正则表达式:

Reference Case\s*:\s*\S+|Case\s*:\s*(\S+) 

[Regex Demo]

我用Reference Case\s*:\s*\S+来匹配你不要什么然后不要让它的值在组中,所以在其他情况下,正则表达式检查Case\s*:\s*(\S+),我将它的值分组为(\S+) - 检查Group 1 - 。