PowerShell:提取特定子串前后的字符串
提取单行文本中特定子串前后的内容
示例文本:
Other text for other things here blah blah TEXT1c:\test\test\ TEXT2 other garbage text here blah blah
需求:编程提取路径c:\test\test\前后紧邻的内容(如示例中的TEXT1和TEXT2),支持同一行存在多个该路径实例的情况,替代固定字符数截取的方案。
解决方案:正则表达式匹配
利用正则匹配非空白字符序列的特性,可精准捕获目标内容,无需依赖固定长度。
代码示例(Python)
import re # 待处理的单行文本 input_text = "Other text here blah blah TEXT1c:\\test\\test\\ TEXT2 garbage text anotherTEXTc:\\test\\test\\ anotherTEXT2" # 正则模式:捕获路径前后的非空白内容 pattern = r"(\S+)c:\\test\\test\\ (\S+)" # 提取所有匹配结果 results = re.findall(pattern, input_text) # 输出每一组匹配到的内容 for pre_text, post_text in results: print(f"路径前内容: {pre_text}, 路径后内容: {post_text}")
说明
\S+:匹配任意连续的非空白字符,刚好对应空格分隔的目标内容,自动适配不同长度findall:返回所有符合模式的匹配组,完美支持同一行多个路径实例的场景- 路径中的反斜杠需转义为
\\,确保正则能正确识别
内容的提问来源于stack exchange,提问作者user2596432
相关产品推荐
相关产品推荐

