簡體   English   中英

正則表達式匹配“目標字符串”

[英]Regex match “target string”

環境:Visual Studio 2008 SP1

我怎么寫下面的正則表達式?

我正試圖去'目標字符串 模式是[name] =''之間的任何字符串

/*Input String*/
SET [blah] = 'AE', [blah] = 'A1A', [number] = 004 WHERE [name]='target string'


/*Current Regex*/
(?<=[?name]?=).*(?=\')

/*Current Results*/
'AE', [blah] = 'A1A', [number] = 004 WHERE [name]='target string

/*Desired Results*/
'target string

你需要轉義方括號,否則它們會被誤解為創建一個字符類。 也就是說,你需要:

(?<=\[?name\]?=).*(?=\')

我還建議將.*改為更明確的'[^']* ,這樣你就不會冒險在目標字符串之后捕獲任何東西; Tim Pietzcker指出(在一個現已刪除的評論中)你可以寫'而不是\\' (接近正則表達式的末尾); 所以:

(?<=\[?name\]?=)'[^']*(?=')

這樣做嗎?

(?<=\[name]=).*?(?=')

或者如果必須在沒有前導(')的情況下返回目標字符串:

(?<=\[name]=').*?(?=')

注意:我假設目標字符串沒有轉義撇號('')。


編輯:這與轉義的撇號有關:

(?<=\[name]=)(''|.)+?(?='([^']|$))

它將找到“ 'John''s pub

SET [blah] = 'AE', [blah] = 'A1A', [number] = 004 WHERE [name]='John''s pub'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM