存在一个具有以下格式的文件:
FY4A-_AGRI--_N_DISK_1047E_L1-_FDI-_MULT_NOM_20191025000000_20191025001459_4000M_V0001.HDF
正则表达式具有以下形式
/^[A-Z]{2}[0-9]{1}[A-Z]{1}[-]{1}[_]{1}[A-Z]{4}[-]{2}[_]{1}[A-Z]{1}[_]{1}[A-Z]{4}[_]{1}[0-9]{4}[A-Z]{1}[_]{1}[A-Z]{1}[0-9]{1}[-]{1}[_]{1}[A-Z]{3}[-]{1}[_]{1}[A-Z]{4}[_]{1}[A-Z]{3}[_]{1}[0-9]{14}[_]{1}[0-9]{14}[_]{1}[0-9]{4}[A-Z]{1}[_]{1}[A-Z]{1}[0-9]{4}[.]{1}[A-Z]{3}$/
我如何确保所有内容都分组?
我想得到类似的东西:
(?P<ftype>[A-Z0-9]{5}) # band type of data file
_[a-z]+ # sat id
_(?P<date>\d{8}) # acq date
_(?P<time>\d{7}) # granule start time UTC
_\d+ # granule end time UTC
_(?P<orbit>\d+) # orbit number
_\d+ # file creation date/time
_\w+.h5
答案 0 :(得分:1)
我可能在这里建议您只是尝试对一组定界符进行正则表达式拆分,这些定界符已用于定义模式中的组:
inp = "FY4A-_AGRI--_N_DISK_1047E_L1-_FDI-_MULT_NOM_20191025000000_20191025001459_4000M_V0001.HDF"
parts = re.split(r'[_.-]+', inp)
print(parts)
此打印:
['FY4A', 'AGRI', 'N', 'DISK', '1047E', 'L1', 'FDI', 'MULT', 'NOM', '20191025000000',
'20191025001459', '4000M', 'V0001', 'HDF']
您可以使用常规的Python列表索引轻松访问所需的任何组。请注意,与这种冗长的正则表达式相比,此方法更干净,更易于维护。
答案 1 :(得分:1)
您可以使用MobileElement listItem=(MobileElement)driver.findElement(MobileBy.AndroidUIAutomator("new UiScrollable(new UiSelector()"
+ ".scrollable(true)).scrollIntoView("
+ "new UiSelector().text(\"<Mention your element text value here>\"))"));
进行以下操作。
regex
输出:
import re
s = 'FY4A-_AGRI--_N_DISK_1047E_L1-_FDI-_MULT_NOM_20191025000000_20191025001459_4000M_V0001.HDF'
re.findall(pattern, s)
[('FY4A',
'AGRI',
'N',
'DISK',
'1047E',
'L1',
'FDI',
'MULT',
'NOM',
'20191025000000',
'20191025001459',
'4000M',
'V0001',
'HDF')]
答案 2 :(得分:0)
结果与以前的选项相同,但方法略有不同:
import re
inp = "FY4A-_AGRI--_N_DISK_1047E_L1-_FDI-_MULT_NOM_20191025000000_20191025001459_4000M_V0001.HDF"
inp = re.sub(r'-', '', inp)
pattern = re.findall(r'''
^([A-Z]{2}\d[A-Z]) # Comment1
_([A-Z]{4}) # Comment2
_([A-Z]) # ...
_([A-Z]{4})
_(\d{4}[A-Z])
_([A-Z]\d)
_([A-Z]{3})
_([A-Z]{4})
_([A-Z]{3})
_(\d{8})0{6}
_(\d{8})\d{6}
_(\d{4}[A-Z])
_([A-Z]\d{4})\.([A-Z]{3})$
''', inp, re.VERBOSE)
这给了我
[('FY4A', 'AGRI', 'N', 'DISK', '1047E', 'L1', 'FDI', 'MULT', 'NOM', '20191025', '20191025', '4000M', 'V0001', 'HDF')]
然后,您可以删除一些组以仅捕获所需的部分。正如我说的那样,这不是更好,但这是将正则表达式切成小块,希望对您有所帮助