簡體   English   中英

正則表達式匹配子字符串,但不以某些字符開頭

[英]regex to match a substring, but not starting with certain characters

我正在搜索一個子字符串,例如test ,在一個更長的字符串中,例如alongstringtest

在這個例子中它會匹配 ok

但我想排除某些情況(當 'test' 前面有某些字符時)

例如

不匹配 'a-test' (因為 '-' )

不匹配 'abcgtest' (因為 'g' )

不匹配 'abc"test' (因為 '"' )

我已經很久沒有寫任何正則表達式了,所以這讓我有點頭疼!

使用負面回顧

(?<![-g"])test

最簡單的答案是

/(?<![g"-])test/

但是如果您需要更高的性能,還有優化的空間。 如果test不能出現在字符串的最開頭,那么就簡單性和性能而言,以下顯然是贏家:

/[^g"-]test/

否則,我會嘗試以下操作:

/test(?<![g"-].{4})/s

/^test|[^g"-]test/

/^test/ || /[^g"-]test/

注意: -在字符類中可以具有特殊含義,但如果它是第一個字符、否定^之后的第一個字符或最后一個字符,則不是。 我總是最后使用它; 它使事情變得美好而簡單。

暫無
暫無

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

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