regex 查找仅在特定搜索词之后出现词的行

nhaq1z21  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(109)

考虑下面一组文件中的行:
File1.csv

Apple is red WHERE the column ALP_ACCT_PROD_ID, it can be plucked
Apple is red ON ALP_ACCT_PROD_ID , WHERE it can be plucked

如果ALP_ACCT_PROD_ID只出现在单词WHERE之后,那么只有它才应该打印它。
因此,对于上面的文件,它应该只打印行- Apple是红色的,其中列ALP_ACCT_PROD_ID,它可以被提取
并忽略第二个,因为ALP_ACCT_PROD_ID不在WHERE之后。
请帮助解决我正试图做一个正常的grep和我得到两行

grep ALP_ACCT_PROD_ID
enyaitl3

enyaitl31#

grep 'WHERE.*ALP_ACCT_PROD_ID' File1.csv
  • WHERE-WHERE上的文字匹配。
  • .*-匹配.(任何字符)*次(零次或多次)
  • ALP_ACCT_PROD_ID-ALP_ACCT_PROD_ID上的文字匹配。
42fyovps

42fyovps2#

  • "....."*

使用-E开关,将模式解释为 “扩展正则表达式”
这将Assert如果值包含“ALP_ACCT_PROD_ID",则其前面必须有任意数量的字符和文本“WHERE"。

grep -E 'WHERE\s+.+\s+ALP_ACCT_PROD_ID'
0x6upsns

0x6upsns3#

Python应该是

import re

pattern = '^(.*)WHERE.*ALP_ACCT_PROD_ID'
text = 'Apple is red WHERE the column ALP_ACCT_PROD_ID, it can be plucked'
finded = re.match(pattern, text)

# this matches the first parenthesis, aka group
finded.group(1)

如果ALP_ACCT_PROD_IDwhere之后,则匹配无效。

相关问题