我知道标题可能不清楚,所以我会更具体地描述我的问题。
这里有两个字符串:
1.'基金资产'
1.'基金寻求通过投资其总资产的至少80%来实现其投资目标'
我的目标是第一个字符串,所以我使用下面的正则表达式代码来获取它:
r'fund+.+asset+'
我之所以在“基金+”和“资产+”之间使用“.+”,是因为在其他情况下,“基金”和“资产”之间可能会有额外的单词,例如“基金总资产”。所以我必须使用'.+'来确保我可以得到所有可能的目标。
但是,同样会被抓的第二根弦,显然不是我的目标。因此,我想限制“基金”和“资产”之间的费用。
伪代码如下:
r'fund+(.+<=6)asset+'
所以我限制了“基金”和“资产”之间的字符数不应超过6个。
regex可以做到这一点吗?谢谢你的帮助!:)
2条答案
按热度按时间nwsw7zdq1#
用花括号检查重复次数:
{m,n}
使结果RE * 匹配前一RE的m到n次重复 *,尝试匹配尽可能多的重复。例如,a{3,5}
将匹配3到5个'a'字符。省略m指定零的下限,并且省略n指定无限的上限。例如,a{4,}b
将匹配aaaab或1000个'a'字符后跟一个b,但不匹配aaab。逗号不能省略,否则修饰语将与前面描述的形式混淆。匹配
fund assets
和fund total assets
,但不匹配fund seeks to achieve its investment objective by investing at least 80% of its total assets
:这里使用
7
使其适用于fund total assets
示例-total
长度为5个字符加上单词周围的两个空格。3j86kqsm2#
可以使用
{}
操作符:其将匹配“fund”和“assets”之间的1到8个任意字符。