简体   繁体   中英

Regex exclude last matched character

I have the following input text:

Teterboro US [TEB] - 20KM

I would like to get the following output :

Teterboro US

I am using the following expression :

.*\[

But it I am getting the following result

Teterboro US [

I would like to get rid of the last space and bracket " ["

I am using JavaScript.

You can use /.*?(?=\\s*\\[)/ with match ; ie change \\[ to look ahead (?=\\s*\\[) which asserts the following pattern but won't consume it:

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

You can try this pattern:

.*(?= \[)

It is positive lookahead assertion and it works just like you expect.

Another option (worth mentioning in case you're not familiar with groups) is to catch only the relevant part:

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

The regex is:

(.*)\[

matches anything followed by "[", but it "remembers" the part surrounded by parenthesis. Later you can access the match depending on the tool/language you're using. In JavaScript you simply access index 1.

You could use: \\w+\\s+\\w+? Depending upon your input

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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