正则表达式替换
我有一个字符串:正则表达式替换
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