为什么我的re.search命令不起作用?

时间:2015-10-09 02:58:00

标签: python regex wlst

我有这个'如果'我脚本中的条件:

if ( re.search(argVariable, newArgs) ):

然而,当我为'argVariable'

传递某个值时,它失败了

示例输出:

Searching for the argument: -XX:+HeapDumpOnOutOfMemoryError
argVariable: "-XX:+HeapDumpOnOutOfMemoryError"
"-XX:+HeapDumpOnOutOfMemoryError" is MISSING, Adding...

我确定我的'newArgs'变量已经拥有它。 (见下文)

New args: -Xverbosetimestamp -Xverbose:memory -XX:+CrashOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我想我需要在使用它之前重新计算实际值。然后我需要使用编译版本来避免变量中的特殊字符被解释为正则表达式的特殊字符:

compiledArgVariable = re.compile(re.escape(argVariable))
if ( re.search(compiledArgVariable, newArgs) ):

示例输出显示它找到了确切的值:

argVariable: "-XX:+HeapDumpOnOutOfMemoryError"
"-XX:+HeapDumpOnOutOfMemoryError" found to be an EXISTING argument. Checking if it has the correct value...
"-XX:+HeapDumpOnOutOfMemoryError" HAS the correct value. Skipping..

答案 1 :(得分:0)

您需要逃避正则表达式,使用re.escape()

escapedRegex = re.escape(regex)