pattern = '^([R][uU][nN])(.*)\((.*)\).'
基本上我要做的就是在表单中的数据中查找过程调用:
RUN proc-name-can-be-anything (input parameters, input, output).
也可以是:
RUN proc-name-long
(
input parameter,
other parameter,
one_more_just_because
).
该模式适用于任何单行实例,我需要能够容纳多行并且在我回到python和正则表达式时已经撕掉了我的头发(我知道该模式仅适用于单行那一刻,因为“。”不能是换行符。我真正关心的是我正在查看的过程调用的参数。
由于
答案 0 :(得分:3)
http://docs.python.org/library/re.html#re.S
http://docs.python.org/library/re.html#re.DOTALL
使
'.'
特殊字符与任何字符匹配,包括换行符
您可以通过在'(?s)'
另外,不要忘记您可能希望将原始字符串语法与模式字符串一起使用,以防万一。我不认为你的例子会有任何问题,但是将它们用作自我提醒总是一个好主意。
像pattern = r'(?s)^([R][uU][nN])(.*)\((.*)\).'
这样的东西应该可以解决问题。
答案 1 :(得分:1)
import re
ss = '''RUN proc-name ( input parameter,
other parameter,
one_more_just_because ).'''
regx = re.compile('^(R[Uu][Nn]) +(.+?) *\((.*?)\)\.',re.MULTILINE|re.DOTALL)
print regx.search(ss).groups()
如果您不想使用re.DOTALL,您也可以这样做:
import re
ss = '''RUN proc-name ( input parameter,
other parameter,
one_more_just_because ).'''
regx = re.compile('^(R[Uu][Nn]) +(.+?) *\(([\s\S]*?)\)\.',re.MULTILINE)
print regx.search(ss).groups()