嗨,我是通过XML文件解析抓取SQL文本和参数。我需要在两个星座之间牵线搭桥。例如,如果这是我的文本:
CASE WHEN TRIM (NVL (a.SPLR_RMRK, ' ')) = '' OR TRIM (NVL (a.SPLR_RMRK, ' ')) IS NULL THEN '~' ELSE a.SPLR_RMRK END AS TXT_DESCR_J, 'PO' AS TXT_TYP_CD_J FROM #ps_RDW_Conn.jp_RDW_SCHEMA_NAME#.P_PO_RCPT_DTL a, (SELECT PO_RCPT_DTL_KEY, ETL_CRT_DTM FROM #ps_RDW_Conn.jp_RDW_SCHEMA_NAME#.#jp_PoRcptDtl_Src# WHERE ETL_UPDT_DTM > TO_DATE ('#jp_EtlPrcsDt#', 'YYYY-MM-DD:HH24:MI:SS'))
我想把ps_RDW_Conn.jp_RDW_SCHEMA_NAME
,ps_RDW_Conn.jp_RDW_SCHEMA_NAME
jp_PoRcptDtl_Src
和jp_EtlPrcsDt
打印出来。你知道吗
到目前为止我掌握的一些代码是
for eachLine in testFile:
print re.findall('#(*?)#', eachLine)
这会导致以下错误:
nothing to repeat.
任何帮助或建议都将不胜感激!你知道吗
尝试转义
(
和)
。r'\(.*?\)'
应该有用。你知道吗for eachLine in testFile: print re.findall(r'\(.*?\)', eachLine)
与
bash
正则表达式不同,*
不是通配符,而是表示将前面的内容重复0次或更多次。你知道吗在正则表达式中,您的
*
没有要修改的符号,因此您看到了投诉nothing to repeat
。你知道吗另一方面如果提供
.
符号供*
修改,以一行测试为例我们得到
更多细节。 我不确定这是否是你想要的,但是你的
*?
实际上是很好的位置。*?
被解释为一个限定词,它表示将前面的事情重复0次或更多次,但要尽可能少地使用。你知道吗因此,这最终会产生类似于@tobias_k在评论中所建议的效果,防止多个群体被吸收到一个群体中。你知道吗
如需参考,请浏览Repeating Things in docs.python.org
您的正则表达式没有按预期工作,因为您同时使用
*
(0或更多)和?
(0或1)来修改它之前的内容,但是a)它之前没有任何内容,b)您应该使用*
或?
,而不是同时使用这两种内容。你知道吗如果要捕获
##
或#anything#
,则使用regex#(.*)#
。你知道吗相关问题 更多 >
编程相关推荐