正则表达式匹配具有特定开始/结束的字符串

时间:2017-04-11 08:35:12

标签: regex string sublimetext3 sublimetext

我正在尝试匹配所有以--开头并以单个空格结尾的字符串。

我正在处理的文件是OpenVPN手册,我想要提及所有选项(例如--option)。

我正在使用Sublime Text,根据其备忘单,他们支持\A\Z来表示字符串的开头和结尾。

因此,我认为\A--.* \Z应匹配所有字符串,从--开始到结尾。

然而,这根本不匹配。

什么正则表达式匹配所有字符串,从双短划线开始,以空格字符结尾?任何与其位置无关的事件都应该匹配。

3 个答案:

答案 0 :(得分:2)

我认为由于使用 string ,您的问题引起了一些混乱。您可能想查找计算机科学的用法(例如here)。您正在寻找的是单词,从--开始,以空格结束(或者可能是行尾)。

您可以在此处使用(?:^|(?<=\s))--\S+

  • (?:^|(?<=\s))检查前面是否有空格或行的开头(使用lookbehind)
  • --\S+匹配双-和一个或多个非空格字符
    • 请注意,这将始终以空格或行尾
    • 结束

另一种可能性是(?:^|(?<=\s))--\w+(?=\s|$)。在这里,它查找一系列单词字符(字母,数字,下划线),并通过前瞻确保它以空格或行尾结束。

答案 1 :(得分:0)

"--.* "

在这里,您将匹配以foo开头并以bar结尾的所有内容

然后在你的情况下尝试

a017kjantina

刚刚在崇高的文本3中测试了它的工作原理

答案 2 :(得分:0)

您可以做的一件事就是将它们添加到.prototype中并创建自己的startsWith()endsWith()函数

这样您就可以执行string.startsWith("starts with this");string.endsWith("ends with this");了,我使用的是substring而不是indexOf,因为它不需要扫描整个字符串就更快。另外,如果将空字符串传递给函数,它们将返回false。 参考链接Here

    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;
  }
};