繁体   English   中英

正则表达式排除最后匹配的字符

[英]Regex exclude last matched character

我有以下输入文本:

Teterboro US [TEB] - 20KM

我想得到以下输出:

Teterboro US

我正在使用以下表达式:

.*\[

但是我得到以下结果

Teterboro US [

我想删除最后一个空格和方括号“ [”

我正在使用JavaScript。

您可以将/.*?(?=\\s*\\[)/match /.*?(?=\\s*\\[)/使用; 即更改\\[向前看(?=\\s*\\[) ,它声明以下模式但不会使用它:

 var s = "Teterboro US [TEB] - 20KM"; console.log( s.match(/.*?(?=\\s*\\[)/) ) 

您可以尝试以下模式:

.*(?= \[)

这是一个positive lookahead assertion ,它的工作原理与您期望的一样。

另一个选择(值得一提的是,如果您对小组不熟悉的话)是仅捕获相关部分:

 var s = "Teterboro US [TEB] - 20KM"; console.log( s.match(/(.*)\\[/)[1] ) 

正则表达式为:

(.*)\[

匹配后跟“ [”的所有内容,但“记住”括号中的部分。 稍后,您可以根据所使用的工具/语言访问匹配项。 在JavaScript中,您只需访问索引1。

您可以使用:\\ w + \\ s + \\ w +? 根据您的输入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM