使用正则表达式python提取字符串

使用正则表达式python提取字符串,python,regex,string,Python,Regex,String,我有一个文件中的文本,我正在将其推入字符串中 txt = "PRIMARY INDEX its_mnth_content_aggr ( AC_ID ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD , DISPATCH_ID ,CASE_CREATE_DT ) ABDCGFWERRUU asdffggb PRIMARY INDEX its_mnth_content_aggr ( AC_CASE ,ROW_ADDED_DT ,NOTE_SEQ_NR ,

我有一个文件中的文本,我正在将其推入字符串中

txt = "PRIMARY INDEX its_mnth_content_aggr ( AC_ID ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD ,
DISPATCH_ID ,CASE_CREATE_DT ) 
ABDCGFWERRUU 
asdffggb 
PRIMARY INDEX its_mnth_content_aggr ( AC_CASE ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD ,\
DISPATCH_ID ,CASE_CREATE_DT )"
我想从中提取完整的主索引,如主索引(..)

到目前为止,我已经做到了

x3 = re.findall(r"\bPRIMARY\sINDEX\s\w+\W.*", txt)
这给了我

['PRIMARY INDEX its_mnth_content_aggr ( AC_CASE_ID ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD ,DISPATCH_ID ,CASE_CREATE_DT )  ABDCGFWERRUU  qwerrtyyuiu PRIMARY INDEX its_mnth_content_aggr ( AC_CASE_ID ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD ,DISPATCH_ID ,CASE_CREATE_DT )']
我想要这样的东西

['PRIMARY INDEX its_mnth_content_aggr ( AC_CASE_ID ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD ,DISPATCH_ID ,CASE_CREATE_DT ) PRIMARY INDEX its_mnth_content_aggr ( AC_CASE_ID ,ROW_ADDED_DT ,NOTE_SEQ_NR ,BIZ_UNIT_CD ,DISPATCH_ID ,CASE_CREATE_DT )'] 

有人能帮忙吗

你的正则表达式说你想要一个以
主索引开头的字符串,后面跟任何字符。所以它匹配所有的字符串


你必须更具体一些

PRIMARY INDEX[A-Za-z(_,\n\\ ]*\)
  • 字符串应以:
    主索引开始
  • 然后在
    [A-Za-z(\u\n\\]
    中可能有任何字母或特殊字符,后面跟着
    *
    ,因为我们不知道这些字符的数量
  • 它的结尾是一个
你可以试试看

你可以用

re.findall(r'\bPRIMARY\s+INDEX\s+\w+\s*\([^()]*\)', txt)

详细信息

  • \b
    -单词边界
  • PRIMARY\s+索引
    -
    PRIMARY
    ,1+空格,
    索引
  • \s+
    -1+空格
  • \w+
    -1+字字符
  • \s*
    -0+空格
  • \(
    -a
    字符
  • [^()]*
    -0+字符,而不是
  • \)
    -a
    字符

此外,我的字符串还包括主索引值之间的换行符
r'\bPRIMARY\s+index\s+\w+\s*\([^()]*\)'