我正在寻找一个模式,匹配所有的东西,直到第一次出现一个特定的字符,说一个“;”-分号。
我这样写道:
/^(.*);/
但它实际上匹配所有内容(包括分号),直到最后出现一个分号。
我正在寻找一个模式,匹配所有的东西,直到第一次出现一个特定的字符,说一个“;”-分号。
我这样写道:
/^(.*);/
但它实际上匹配所有内容(包括分号),直到最后出现一个分号。
当前回答
你需要
/^[^;]*/
[^;]是一个字符类,它匹配除分号以外的所有字符。
^ (start of line anchor)被添加到正则表达式的开头,因此只捕获每行上的第一个匹配。这可能需要,也可能不需要,这取决于是否需要可能的后续匹配。
引用perlre manpage:
您可以通过在[]中包含一个字符列表来指定一个字符类,它将匹配列表中的任何字符。如果“[”后面的第一个字符是“^”,则类匹配列表之外的任何字符。
这应该适用于大多数正则表达式方言。
其他回答
尝试/ [^;]* /
谷歌正则表达式字符类的详细信息。
尝试/ [^;]* /
这是一个否定字符类。
真的有点难过,没有人给你正确的答案....
在正则表达式中,?使它非贪婪。默认情况下,regex将尽可能多地匹配(贪婪)
简单地加一个?并且它将是非贪婪的,匹配越少越好!
祝你好运,希望有帮助。
你需要
/^[^;]*/
[^;]是一个字符类,它匹配除分号以外的所有字符。
^ (start of line anchor)被添加到正则表达式的开头,因此只捕获每行上的第一个匹配。这可能需要,也可能不需要,这取决于是否需要可能的后续匹配。
引用perlre manpage:
您可以通过在[]中包含一个字符列表来指定一个字符类,它将匹配列表中的任何字符。如果“[”后面的第一个字符是“^”,则类匹配列表之外的任何字符。
这应该适用于大多数正则表达式方言。
/ ^ ^; * /
[^;]表示匹配除分号以外的任何内容。方括号是集合匹配操作符,本质上是,匹配这个字符集中的任何字符,开头的^使它成为逆匹配,所以匹配这个字符集之外的任何字符。