我是一个完整的Reg-exp noob,所以请忍受我。我试着google了一下,但还没有找到。编写正则表达式匹配以点开头的文件(如.buildpath或.htaccess)的合适方法是什么?非常感谢!
.buildpath
.htaccess
knpiaxh11#
在大多数正则表达式语言中,^\.或^[.]将匹配前导点。
^\.
^[.]
wlwcrazw2#
^匹配大多数语言中字符串的开头。这将匹配前导.。你需要添加你的文件名表达式。
^
.
类似地,$将匹配字符串的结尾。
$
nkcskrwz3#
您可能需要用\替换相应的语言转义字符。但是,在PowerShell下,我使用的Regex是:^(\.)+\/测试用例:
\
^(\.)+\/
"../NameOfFile.txt" -match '^(\\.)+\\\/'
工作,而
"_./NameOfFile.txt" -match '^(\\.)+\\\/'
没有。当然,你可能会问,这里发生了什么?(\\.)搜索文字.,后跟+,它至少匹配前一个字符一次或多次。最后,\\\/确保它符合Window文件路径。
\\.
+
\\\/
sbtkgmzw4#
这在一定程度上取决于你使用的正则表达式库,但你可以这样做:
^\.\w+
^将匹配锚定到字符串的开头,\.匹配文字句点(因为正则表达式中的非转义.通常匹配任何字符),\w+匹配1个或多个“单词”字符(字母数字加_)。有关Perl风格的正则表达式及其语法的更多信息,请参阅perlre文档。
\.
\w+
_
4dc9hkyq5#
它取决于文件名中哪些字符是法律的的,这取决于操作系统和文件系统。例如,在Windows中,这将是:^\.[^<>:"/\\\|\?\*\x00-\x1f]+$上述表达式的意思是:
^\.[^<>:"/\\\|\?\*\x00-\x1f]+$
我使用this作为文件名中不允许使用哪些字符的参考。
aor9mmx16#
要匹配java中以点开头的字符串,您必须编写一个简单的表达式
^\\..*
^表示正则表达式从字符串的开头开始匹配.表示它将以字符串文字“”开头。.* 表示点后面将跟0个或多个字符
zpgglvta7#
如果你使用的是javascript,在这种情况下可能不需要正则表达式。你可以使用startsWith()方法:
if ('.buildpath'.startsWith('.')) { console.log('String starts with a dot'); }
7条答案
按热度按时间knpiaxh11#
在大多数正则表达式语言中,
^\.
或^[.]
将匹配前导点。wlwcrazw2#
^
匹配大多数语言中字符串的开头。这将匹配前导.
。你需要添加你的文件名表达式。类似地,
$
将匹配字符串的结尾。nkcskrwz3#
您可能需要用
\
替换相应的语言转义字符。但是,在PowerShell下,我使用的Regex是:^(\.)+\/
测试用例:
工作,而
没有。
当然,你可能会问,这里发生了什么?
(
\\.
)搜索文字.
,后跟+
,它至少匹配前一个字符一次或多次。最后,
\\\/
确保它符合Window文件路径。sbtkgmzw4#
这在一定程度上取决于你使用的正则表达式库,但你可以这样做:
^
将匹配锚定到字符串的开头,\.
匹配文字句点(因为正则表达式中的非转义.
通常匹配任何字符),\w+
匹配1个或多个“单词”字符(字母数字加_
)。有关Perl风格的正则表达式及其语法的更多信息,请参阅perlre文档。
4dc9hkyq5#
它取决于文件名中哪些字符是法律的的,这取决于操作系统和文件系统。
例如,在Windows中,这将是:
^\.[^<>:"/\\\|\?\*\x00-\x1f]+$
上述表达式的意思是:
.
开头的字符串我使用this作为文件名中不允许使用哪些字符的参考。
aor9mmx16#
要匹配java中以点开头的字符串,您必须编写一个简单的表达式
^表示正则表达式从字符串的开头开始匹配
.表示它将以字符串文字“”开头。
.* 表示点后面将跟0个或多个字符
zpgglvta7#
如果你使用的是javascript,在这种情况下可能不需要正则表达式。你可以使用startsWith()方法: