我试图写一个正则表达式来匹配每个以.txt或.cs(单独调用)结尾的文件名,而它们的名称中没有其他.。做了一些研究,我尝试了这个。对于.cs
.txt
.cs
.
^[^.]*\.[^.]*\.cs$
对于.txt
^[^.]*\.[^.]*\.txt$
但它似乎没有带着任何火柴回来。.txt示例:匹配sometext.txt但不匹配some.text.txt.cs示例:匹配somefile.cs但不匹配some.file.txt
sometext.txt
some.text.txt
somefile.cs
some.file.txt
jljoyd4f1#
根据我的理解,你正在寻找的regex是:
^[^.]*\.txt$
在上面的例子中,如果需要,请将.txt替换为.cs。你之前给出的例子是在寻找:1.任何不是“."的字符,0到无限次。1.显式“.”字符。1.任何不是“."的字符,0到无限次。1.明确的“.txt”或“.cs”结尾。有一些很棒的工具可以帮助你使用正则表达式。请找到**here我推荐的正则表达式和here**你以前使用的正则表达式。Regex101是一个非常好的工具,它解释了正则表达式中的每个细节,并帮助您测试和调试正则表达式。希望这对你有帮助:)
rkkpypqq2#
它们没有按预期工作,因为它们试图精确匹配文件名中的两个句点(“.”)。要匹配以.txt或.cs结尾且名称中没有任何其他句点的文件名,可以尝试以下模式。对于.cs:regex
^[^.]*\.cs$
对于.txt:regex
下面是每个模式的作用:^[^.]* 匹配任何不包含句点的字符序列。这样可以确保文件名中在所需扩展名之前没有其他句点。.cs$或.txt$确保文件名以所需的扩展名(.cs或.txt)结尾。以下是这些模式如何工作的示例:.cs示例:匹配:somefile.cs不匹配:some.file.cs.txt示例:匹配项:sometext.txt不匹配:some.text.txt这些模式应该为您提供匹配具有指定扩展名且名称中没有任何其他句点的文件名的预期结果。
gkl3eglg3#
您可以尝试:
^[^.]*\.(?:txt|cs)$
上述正则表达式的解释:*^-表示行的开始*$-表示行尾*[^.]*-Grecker匹配除.以外的所有字符(当然还有换行符)。*\.-匹配.文字。*(?:txt|cs)-表示匹配txt或cs的非捕获组。如果您正在寻找单独的调用,您可以使用它而无需捕获组,如^[^.]*\.txt$和^[^.]*\.cs$。
^
$
[^.]*
\.
(?:txt|cs)
txt
cs
您可以在**here.**x1c 0d1x中找到上述正则表达式的演示
3条答案
按热度按时间jljoyd4f1#
根据我的理解,你正在寻找的regex是:
在上面的例子中,如果需要,请将.txt替换为.cs。
你之前给出的例子是在寻找:
1.任何不是“."的字符,0到无限次。
1.显式“.”字符。
1.任何不是“."的字符,0到无限次。
1.明确的“.txt”或“.cs”结尾。
有一些很棒的工具可以帮助你使用正则表达式。
请找到**here我推荐的正则表达式和here**你以前使用的正则表达式。
Regex101是一个非常好的工具,它解释了正则表达式中的每个细节,并帮助您测试和调试正则表达式。
希望这对你有帮助:)
rkkpypqq2#
它们没有按预期工作,因为它们试图精确匹配文件名中的两个句点(“.”)。要匹配以.txt或.cs结尾且名称中没有任何其他句点的文件名,可以尝试以下模式。
对于.cs:
regex
对于.txt:
regex
下面是每个模式的作用:
^[^.]* 匹配任何不包含句点的字符序列。这样可以确保文件名中在所需扩展名之前没有其他句点。
.cs$或.txt$确保文件名以所需的扩展名(.cs或.txt)结尾。
以下是这些模式如何工作的示例:
.cs示例:
匹配:somefile.cs
不匹配:some.file.cs
.txt示例:
匹配项:sometext.txt
不匹配:some.text.txt
这些模式应该为您提供匹配具有指定扩展名且名称中没有任何其他句点的文件名的预期结果。
gkl3eglg3#
您可以尝试:
上述正则表达式的解释:
*
^
-表示行的开始*
$
-表示行尾*
[^.]*
-Grecker匹配除.
以外的所有字符(当然还有换行符)。*
\.
-匹配.
文字。*
(?:txt|cs)
-表示匹配txt
或cs
的非捕获组。如果您正在寻找单独的调用,您可以使用它而无需捕获组,如^[^.]*\.txt$
和^[^.]*\.cs$
。您可以在**here.**x1c 0d1x中找到上述正则表达式的演示