2017-09-03 104 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 - 。