正则表达式匹配具有特定 start/end 的字符串
Regex to match a string with specific start/end
我正在尝试匹配所有出现的以 --
开头并以单个 space </code>.</p> 结尾的字符串
<p>我正在处理的文件是 OpenVPN 手册,我想要提到的所有选项(例如 <code>--option
)。
我正在使用 Sublime Text,根据其备忘单,它们支持 \A
和 \Z
来表示字符串的开始和结束。
因此,我认为 \A--.* \Z
应该匹配所有字符串,以 --
开始并以
.
结束
然而,这根本不匹配。
什么正则表达式可以匹配所有以双破折号开头并以 space 字符结尾的字符串?应匹配与其位置无关的任何事件。
foo.*bar
在这里您将匹配以 foo 开头和以 bar 结尾的所有内容
然后根据你的情况尝试
"--.* "
刚刚在 sublime text 3 中测试它有效
我认为您的问题由于使用了 string 而引起了一些混乱。您可能想查看计算机科学的用法(例如 here)。您正在寻找的是单词,以 --
开头并以 space 结尾(或者可能是行尾)。
你可以在这里使用(?:^|(?<=\s))--\S+
。
(?:^|(?<=\s))
检查前面是否有 space 或一行的开头(使用后视)
--\S+
匹配双 -
和一个或多个非 space 字符
- 请注意,这将始终以 space 或行尾
结束
另一种可能性是(?:^|(?<=\s))--\w+(?=\s|$)
。它在这里查找一系列单词字符(字母、数字、下划线),并通过前瞻确保它以 space 或行尾结束。
您可以做的一件事是将这些添加到 .prototype
并创建您自己的 startsWith()
和 endsWith()
函数
通过这种方式,您可以执行 string.startsWith("starts with this");
和 string.endsWith("ends with this");
我使用 substring
而不是 indexOf
,因为它无需扫描整个字符串即可更快。此外,如果您将空字符串传递给它们 return false
的函数。
参考linkHere
if ( typeof String.prototype.startsWith != 'function' ) {
String.prototype.startsWith = function( str ) {
return str.length > 0 && this.substring( 0, str.length ) === str;
}
};
if ( typeof String.prototype.endsWith != 'function' ) {
String.prototype.endsWith = function( str ) {
return str.length > 0 && this.substring( this.length - str.length, this.length ) === str;
}
};
我正在尝试匹配所有出现的以 --
开头并以单个 space </code>.</p> 结尾的字符串
<p>我正在处理的文件是 OpenVPN 手册,我想要提到的所有选项(例如 <code>--option
)。
我正在使用 Sublime Text,根据其备忘单,它们支持 \A
和 \Z
来表示字符串的开始和结束。
因此,我认为 \A--.* \Z
应该匹配所有字符串,以 --
开始并以 .
然而,这根本不匹配。
什么正则表达式可以匹配所有以双破折号开头并以 space 字符结尾的字符串?应匹配与其位置无关的任何事件。
foo.*bar
在这里您将匹配以 foo 开头和以 bar 结尾的所有内容
然后根据你的情况尝试
"--.* "
刚刚在 sublime text 3 中测试它有效
我认为您的问题由于使用了 string 而引起了一些混乱。您可能想查看计算机科学的用法(例如 here)。您正在寻找的是单词,以 --
开头并以 space 结尾(或者可能是行尾)。
你可以在这里使用(?:^|(?<=\s))--\S+
。
(?:^|(?<=\s))
检查前面是否有 space 或一行的开头(使用后视)--\S+
匹配双-
和一个或多个非 space 字符- 请注意,这将始终以 space 或行尾 结束
另一种可能性是(?:^|(?<=\s))--\w+(?=\s|$)
。它在这里查找一系列单词字符(字母、数字、下划线),并通过前瞻确保它以 space 或行尾结束。
您可以做的一件事是将这些添加到 .prototype
并创建您自己的 startsWith()
和 endsWith()
函数
通过这种方式,您可以执行 string.startsWith("starts with this");
和 string.endsWith("ends with this");
我使用 substring
而不是 indexOf
,因为它无需扫描整个字符串即可更快。此外,如果您将空字符串传递给它们 return false
的函数。
参考linkHere
if ( typeof String.prototype.startsWith != 'function' ) {
String.prototype.startsWith = function( str ) {
return str.length > 0 && this.substring( 0, str.length ) === str;
}
};
if ( typeof String.prototype.endsWith != 'function' ) {
String.prototype.endsWith = function( str ) {
return str.length > 0 && this.substring( this.length - str.length, this.length ) === str;
}
};