regex 如何限制正则表达式中出现的某些字符

cuxqih21  于 2023-05-08  发布在  其他
关注(0)|答案(2)|浏览(162)

我知道标题可能不清楚,所以我会更具体地描述我的问题。
这里有两个字符串:
1.'基金资产'
1.'基金寻求通过投资其总资产的至少80%来实现其投资目标'
我的目标是第一个字符串,所以我使用下面的正则表达式代码来获取它:

r'fund+.+asset+'

我之所以在“基金+”和“资产+”之间使用“.+”,是因为在其他情况下,“基金”和“资产”之间可能会有额外的单词,例如“基金总资产”。所以我必须使用'.+'来确保我可以得到所有可能的目标。
但是,同样会被抓的第二根弦,显然不是我的目标。因此,我想限制“基金”和“资产”之间的费用。
伪代码如下:

r'fund+(.+<=6)asset+'

所以我限制了“基金”和“资产”之间的字符数不应超过6个。
regex可以做到这一点吗?谢谢你的帮助!:)

nwsw7zdq

nwsw7zdq1#

用花括号检查重复次数:
{m,n}使结果RE * 匹配前一RE的m到n次重复 *,尝试匹配尽可能多的重复。例如,a{3,5}将匹配3到5个'a'字符。省略m指定零的下限,并且省略n指定无限的上限。例如,a{4,}b将匹配aaaab或1000个'a'字符后跟一个b,但不匹配aaab。逗号不能省略,否则修饰语将与前面描述的形式混淆。

fund.{1,7}assets

匹配fund assetsfund total assets,但不匹配fund seeks to achieve its investment objective by investing at least 80% of its total assets

>>> re.search(r'fund.{1,7}assets', 'fund assets')
<_sre.SRE_Match object at 0x107951098>
>>> re.search(r'fund.{1,7}assets', 'fund total assets')
<_sre.SRE_Match object at 0x107951030>
>>> re.search(r'fund.{1,7}assets', 'fund seeks to achieve its investment objective by investing at least 80% of its total assets')
>>>

这里使用7使其适用于fund total assets示例-total长度为5个字符加上单词周围的两个空格。

3j86kqsm

3j86kqsm2#

可以使用{}操作符:

r'fund.{1,8}assets'

其将匹配“fund”和“assets”之间的1到8个任意字符。

相关问题