我正在寻找一个regex命令来匹配文件夹中的文件名。我已经在列表中获得了所有文件名。现在我想匹配循环中的模式(文件是要匹配的字符串):
var Book = new Book{ statusId = rent.Id };
db.SecondTable.Add(Book);
db.SaveChanges();
with:
./test1_word1_1.1_1.2_1.3.csv
我过去常常使用正则表达式,但在这种特殊情况下它很简单并不起作用。你能帮帮我吗?
我希望以下列方式继续正则表达式的匹配(我已经在这里写了结果):
match = re.search(r'./{([\w]+)}_word1_{([0-9.]+)}_{([0-9.]+)}_{([0-9.]+)}*',file)
大括号是我的错。他们根本没有意义。对不起
祝你好运, 塞巴斯蒂安
答案 0 :(得分:1)
您可以使用
r'\./([^\W_]+)_word1_([0-9.]+)_([0-9.]+)_([0-9]+(?:\.[0-9]+)*)'
请参阅regex demo
<强>详情:
\.
- 一个字面点(如果它未转义,则匹配除换行符之外的任何字符)/
- 一个/
符号(无需以Python正则表达式模式转义)([^\W_]+)
- 第1组匹配1个或多个字母或数字(如果您要匹配包含_
的数据块,请保留原始(\w+)
模式)_word1_
- 文字子字符串([0-9.]+)
- 第1组匹配1位或多位数字和/或.
符号_
- 下划线([0-9.]+)
- 第2组匹配1位或多位数字和/或.
符号_
- 下划线([0-9]+(?:\.[0-9]+)*)
- 第3组匹配1个或多个数字,然后是0个.
和1个或更多数字的序列import re
rx = r"\./([^\W_]+)_word1_([0-9.]+)_([0-9.]+)_([0-9]+(?:\.[0-9]+)*)"
s = "./test1_word1_1.1_1.2_1.3.csv"
m = re.search(rx, s)
if m:
print("Part1: {}\nPart2: {}\nPart3: {}\nPart4: {}".format(m.group(1), m.group(2), m.group(3), m.group(4) ))
输出:
Part1: test1
Part2: 1.1
Part3: 1.2
Part4: 1.3
答案 1 :(得分:1)
由于test_word&lt;&gt; .csv是&lt;&gt;内的文件名和内容将永远改变,并以点分隔数字,你能试试吗?
R&#34; test1_word * CSV&#34 [_0-9。];克
示例代码和测试字符串
# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"test1_word[_0-9.]*.csv"
test_str = ("./test1_word1_1.1_1.2_1.3.csv\n"
"./test1_word1_1.31.2_1.555.csv\n"
"./test1_word1_10.31.2_2000.00.csv")
matches = re.finditer(regex, test_str)
for matchNum, match in enumerate(matches):
matchNum = matchNum + 1
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
想要测试? https://regex101.com/会帮助你。