2017-04-20 48 views
1

我必须写一个正则表达式引用一个字符串。我需要获取“$ u”和最后的“$”之间的部分,我也需要匹配前一部分“$ U” 现在我写的正则表达式如下,但它不能正常工作如何使用正则表达式来匹配字符串包含两个反斜杠

a='=856 \\$uhttp://sfx-852cuh.hosted$' 
#Two backslash may replace by other characters:a='=856 aa$uhttp://sfx-852cuh.hosted$' 
result=re.search('=\w{3}\s{2}\S{2}\$u(.*)\$', a) 
target_str=result.group(1) 
+0

替换'\ S {2} '用'\ S'重试。 ''''''实际上是1个符号。另外,为什么不使用['r'\ $ u([^ $] +)''](https://ideone.com/yNmbzK)? –

+0

不要指派给'str'。这是一个内置的。 – kabanus

回答

2

更换\S{2}\S{1,2}如果你希望$u前1或2个非空格字符,不要使用一个变量str名称:

import re 
a='=856 \\$uhttp://sfx-852cuh.hosted$' 
result=re.search(r'=\w{3}\s{2}\S{1,2}\$u(.*)\$', a) 
expected_value = '' 
if result: 
    expected_value = result.group(1) 
print(expected_value) 

Python demo

+0

这太棒了!谢谢! –

+0

因此,在'$ u'之前你可以有1或2个非空白字符,对吧?你需要在你的问题中指出。 –

+0

接受,谢谢 –

0

旁注 - “\”在一个字符串是一个表示“\”,因为它是一个特殊角色的开始。

反正你可以使生活更轻松 - 如果你只保证一个“$ U”:

a='=856 \\$uhttp://sfx-852cuh.hosted$' 
#Two backslash may replace by other characters:a='=856 aa$uhttp://sfx-852cuh.hosted$' 
result=re.search('(.*)\$u(.*)\$', a) 
NOT_str=result.group(2) 

1组包含$u前的东西。

+0

您注意了吗?两个反斜杠可能会被其他字符替换:a ='= 856 aa $ uhttp://sfx-852cuh.hosted$'*? –

+0

@WiktorStribiżew啊,不用了,谢谢! – kabanus

+0

那么如果两个反斜杠替换为其他字符,该如何解决? @kabanus –

相关问题