簡體   English   中英

正則表達式匹配一個字符之前和之后

[英]Regex to match before and after a character

我目前正在尋找在我的文本編輯器SublimeText 3中使用正則表達式進行查找/替換操作。

我所擁有的是很多看起來像這樣的行:

array(self::var1, self::var2, class::var_1, class::var_2, self::varCaps)

我想要做的是匹配數組中的每個項目。 我唯一知道的是每個人都有::中間的字符。

我可以很容易地匹配::字符之前的字符串

(?<=::)[a-zA-z0-9\_\-]+
//should match 'self::' in self::var1

我也可以在:: characters后使用匹配

[a-zA-z0-9\_\-]+(?=::)
//should match 'var1' in self::var1

我如何結合這兩件事來創建一個與整個事物相匹配的表達式?

編輯:我的文本編輯器是SublimeText 3

您的模式存在問題: [Az]范圍不僅僅匹配小寫和大寫字母(請參閱[Az]和[a-zA-Z]差異 )。

要組合(?<=::)[a-zA-Z0-9_-]+[a-zA-Z0-9_-]+(?=::) (注意帶_-的轉義是多余的)你可以使用[a-zA-Z0-9_-]+::[a-zA-Z0-9_-]+ (注意::是匹配的一部分,因為正則表達式不匹配1匹配操作中的不連續文本所以無法避免)。

現在, [a-zA-Z0-9_]是不一樣的\\w在崇高的文本為\\w也符合所有Unicode字母和數字! 如果您不介意,可以使用\\w+::\\w+

另外,如果你想-只在單詞字符之間出現一次,使用\\w+(?:-\\w+)*::\\w+(?:-\\w+)* [a-zA-Z0-9_]+(?:-[a-zA-Z0-9_])*::[a-zA-Z0-9_]+(?:-[a-zA-Z0-9_])* \\w+(?:-\\w+)*::\\w+(?:-\\w+)* [a-zA-Z0-9_]+(?:-[a-zA-Z0-9_])*::[a-zA-Z0-9_]+(?:-[a-zA-Z0-9_])* \\w+(?:-\\w+)*::\\w+(?:-\\w+)* [a-zA-Z0-9_]+(?:-[a-zA-Z0-9_])*::[a-zA-Z0-9_]+(?:-[a-zA-Z0-9_])* Unicode)或者你可以使用[a-zA-Z0-9_]+(?:-[a-zA-Z0-9_])*::[a-zA-Z0-9_]+(?:-[a-zA-Z0-9_])*僅匹配ASCII字母/數字。

暫無
暫無

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

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