python3 reModule.findall_解析字符串_文件路径.py

"""
功能:解析字符串中的文件路径。
模块:python3 reModule.findall_解析字符串_文件路径.py
"""
import re

# 1.匹配 json 字符串中,指定文件格式的文件路径,
#   如:js, json, css, html 文件等。
print("\n1.")
doc = '''
"data/pipeline.json?cache=2",
"pipeline.json",
"../../lib/include-lib.js?time=20190418"
'''
print(re.findall(r'"(.+json\b)', doc))  # 匹配 json 文件路径。
print(re.findall(r'"([_a-zA-Z0-9./-]+json\b)', doc))  # 匹配 json 文件路径。
print(re.findall(r'"([./a-zA-Z0-9_-]+js\b)', doc))  # 匹配 .js 文件路径。
print(re.findall(r'"([./a-zA-Z0-9_-]+js)[^on]', doc))  # 匹配 .js 文件路径。
# ['data/pipeline.json', 'pipeline.json']
# ['data/pipeline.json', 'pipeline.json']
# ['../../lib/include-lib.js']
# ['../../lib/include-lib.js']

print("\n2.")
doc = '''
"content": {
  "uri": "../../BulkMetadata/pb=!1m2!1s2062!2u866.json"
},
"content": {
  "uri": "../NodeData/pb=!1m2!1s2062!2u866!2e1!3u844!4b0.b3dm"
},
"content": {
      "uri": "./BulkMetadata/pb=!1m2!1s2060!2u866.json"
},
"content": {
      "uri": "./NodeData/pb=!1m2!1s2060!2u866!2e1!3u844!4b0.b3dm"
}
'''
# []中的模式,是匹配其中包含的字符;+,代表一个或多个。
print(re.findall(r"[./a-zA-Z=!0-9]+json", doc))  # 匹配 json 文件的 uri
print(re.findall("[./a-zA-Z=!0-9]+b3dm", doc))  # 匹配 b3dm 文件的 uri
# ['../../BulkMetadata/pb=!1m2!1s2062!2u866.json',
# './BulkMetadata/pb=!1m2!1s2060!2u866.json']
# ['../NodeData/pb=!1m2!1s2062!2u866!2e1!3u844!4b0.b3dm',
# './NodeData/pb=!1m2!1s2060!2u866!2e1!3u844!4b0.b3dm']

# 3.匹配 json 字符串中的字段的值。
print("\n3.")
tileSet = '"content":{"url":"lab_b_0.json"}'
lab_b_0 = '"content":{"url":"4/13/0/0.b3dm"},"content":{"url":"4/13/0.b3dm"},"content":{"url":"4/11/0/0/0.b3dm"}'
# ()中的模式,是要提取的内容模式。
pattern = re.compile(r'"url":"(.*?)"')  # 查找url
result = pattern.findall(tileSet)
print(result)
# ['lab_b_0.json']
result = pattern.findall(lab_b_0)
print(result)
# ['4/13/0/0.b3dm', '4/13/0.b3dm', '4/11/0/0/0.b3dm']



你可能感兴趣的:(python3)