我有一個字符串:正則表達式替換
users/554983490\/Another+Test+/Question????\/+dhjkfsdf/
我怎麼會寫一個正則表達式,將匹配所有的是斜槓不是由回斜線?
編輯:有沒有辦法做到這一點,而不使用負面lookbehinds?
我有一個字符串:正則表達式替換
users/554983490\/Another+Test+/Question????\/+dhjkfsdf/
我怎麼會寫一個正則表達式,將匹配所有的是斜槓不是由回斜線?
編輯:有沒有辦法做到這一點,而不使用負面lookbehinds?
如果你的正則表達式支持negative lookbehinds:
/(?<!\\)\//
否則,你將需要的字符/
以及之前匹配:
/(^|[^\\])\//
這可以與除捕獲組#()
之外的任何非\
([^\\]
)的字符串(^
)或(|
)之一匹配。然後它匹配文字/
之後。無論角色是以前/
將被存儲在捕獲組中$1
所以你可以把它放回如果你正在做一個替代....
示例(JavaScript的):
'st/ri\\/ng'.replace(/(^|[^\\])\//, "$1\\/");
// returns "st\/ri\/ng"
是的,但是這包括之前的信 – 2010-10-14 20:21:28
負面後顧之事不包括它......第二場比賽會,但如果你不支持負向後視,它是你唯一的選擇......你可以做一些像' 'st/ri \\/ng'.replace(/(^ | [^ \\])\ //,「$ 1 \\ /」);'在javascript中加入反斜槓到任何'/'已經沒有了。 – gnarf 2010-10-14 21:31:30
您可以使用此:
/(?<!\\)\//
這就是所謂的negative lookbehind。
我用/作爲分隔符
(?<! <-- Start of the negative lookbehind (means that it should be preceded by the following pattern)
\\ <-- The \ character (escaped)
) <-- End of the negative lookbehind
\/ <-- The/character (escaped)
哪種語言是你使用您的RegExp?有許多口味... – gnarf 2010-10-14 20:11:14
即使有向後看,你也無法可靠地做到這一點。但是,如果你告訴我們你想要完成什麼,我們可能會提出一種不同的方法。 – 2010-10-15 00:06:43