我的问题是关于以下推文:
Credit Suisse Trims Randgold Resources Limited (RRS) Target Price to GBX
JPMorgan Chase & Co Trims Occidental Petroleum Co (OXY) Target Price to
我想从第一条推文中删除“Randgold Resources Limited(RRS)”,并使用Regex从第二条推文中删除“Occidental Petroleum Co(OXY)”。< / p>
我正在使用Python,到目前为止,我已经尝试过这个没有太多运气了:
Trims\s[\w\s.()]+(?=Target)
我想在两个实例中捕获短语“Trims Target Price”。帮助将不胜感激。
答案 0 :(得分:1)
(?<=Trims )([A-Z][a-z]+ ){3}\([A-Z]{3}\)
<小时/>
这个想法是:
(?<=Trims )
- 使用positive lookbehind Trims
前面的地点
[A-Z][a-z]+
- 以大写字母开头并以多个小写字母开头的单词([A-Z][a-z]+ ){3}
- 三个单词后跟空格\(
和\)
- 括号必须转义,否则它们具有捕获群组的含义[A-Z]{3}
- 三个大写字母答案 1 :(得分:1)
您可以使用此基于外观的正则表达式:
p = re.compile(r'(?<= Trims) .*?(?= Target )')
result = re.sub(p, "", test_str)
(?<= Trims) .*?(?= Target )
将匹配Trim
和Target
之间的任何文字。
答案 2 :(得分:0)
(?<=...) Lookbehind assertion, match if preceded
字缺少Trims
。
re.sub('(?<=Trims)\s[\w\s.()]+(?=Target)', ' ', text)