我有一个str,它是hdfs命令的结果,用于显示给定路径的文件夹、文件或不存在的路径,下面是一些示例:
stru文件:
-rw-rw----+ 3 jdoe clouderausersdev 12267543 2018-02-05 16:41 hdfs://nameservice1/client/abc/part-00000-994917013a6a-c000.snappy.parquet
str_文件夹:
Found 3 items
-rw-rw----+ 3 jdoe clouderausersdev 0 2018-02-05 16:41 hdfs://nameservice1/client/abc/_SUCCESS
-rw-rw----+ 3 jdoe clouderausersdev 12267543 2018-02-05 16:41 hdfs://nameservice1/client/abc/part-00000-994917013a6a-c000.snappy.parquet
-rw-rw----+ 3 jdoe clouderausersdev 12267543 2018-02-05 16:41 hdfs://nameservice1/client/abc/part-00001-994917013a6a-c000.snappy.parquet
-rw-rw----+ 3 jdoe clouderausersdev 12267543 2018-02-05 16:41 hdfs://nameservice1/client/abc/part-00002-994917013a6a-c000.snappy.parquet
str_不存在:
ls: `hdfs://nameservice1/client/abc/part-00000.parqu': No such file or directory
现在我想知道正则表达式检查的结果,问题是:
import re
regex_folder = "Found [1-9]\d items"
regex_file = ".parquet"
regex_error = "No such file"
测试结果如下:
那么,我如何区分m和m1之间的区别呢?显然,m表示没有发现,而m1表示存在匹配
最后,我需要告诉三个场景:文件夹、文件、不存在
多谢各位
更新(根据ФццПццццццццццц1094
仍在工作:m1应显示匹配,而m不应显示匹配
您的正则表达式
Found [1-9]\d items
意味着您要搜索Found xy items
,其中x
是介于1和9之间的数字,y
是介于0和9之间的数字。这是有问题的,我假设这不是您想要的。如果要匹配一个或多个数字,只需使用\d+
。您可以使用online regex testers调试此类问题第二个问题是字符串文本的误用。在Python中使用正则表达式时,应始终使用原始字符串文字,这些文字以字母“r”开头
re.search(r'regex \d here', ..
re.search('regex \d here', ..
李>一旦你解决了这些问题,
result = re.search(r'Found \d+ items', some_string)
就会起作用。要检查是否存在任何匹配项,可以将结果与None
进行比较。如果结果不是None
,它将是一个match object。注意:当表达式的计算结果为“无”时,其结果为空,并且不会显示在解释器中这是一个有效的演示:
另外,请记住,正则表达式不擅长解析对人友好的消息,可能存在用于HDF的库,而不是解析原始输出
相关问题 更多 >
编程相关推荐