在python中匹配这个正则表达式(负前瞻?)

2024-10-02 14:29:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在找不到这个正则表达式的解决方案。它非常简单,我是一个超级新手,我不知道怎么做。我有这些条件:

 palsar_cprof_1_1_10_0.sdat #1
 palsar_0.99_10_1_0.sdat #2
 srtm_cprof_10_10_5_0.sdat #3
 srtm_10_10_5_0.sdat #4

我只想匹配2和4,因为在srtm或palsar之后有一个下划线,然后是一个数字(0.99和10),没有其他字符(cprof)。我尝试的是这样的(在python中):

re.search(^(.*_)(?![az]]), string)

我认为这是一个消极的前瞻,应该确保它从任何东西开始,直到a_u,然后没有来自a-z的字母。但它不起作用。有什么建议吗


Tags: researchstring数字解决方案条件字符az
1条回答
网友
1楼 · 发布于 2024-10-02 14:29:21

你可以用

^[^_]*_\d

regex demo。详情:

  • ^-字符串的开头
  • [^_]*-除_之外的零个或多个字符
  • _-下划线
  • \d-一个数字
import re
l = ['palsar_cprof_1_1_10_0.sdat #1','palsar_0.99_10_1_0.sdat #2','srtm_cprof_10_10_5_0.sdat #3','srtm_10_10_5_0.sdat #4']
rx = re.compile(r'^[^_]*_\d')
l = list(filter(rx.search, l))
print(l)
# => ['palsar_0.99_10_1_0.sdat #2', 'srtm_10_10_5_0.sdat #4']

Python demo

相关问题 更多 >