Alex Lavriv
Alex Lavriv

Reputation: 321

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.

Upvotes: 1

Views: 123

Answers (4)

HoleInVoid
HoleInVoid

Reputation: 49

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

Upvotes: 0

Maroun
Maroun

Reputation: 95948

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.

Upvotes: 0

cn0047
cn0047

Reputation: 17051

You can try this pattern:

.*(?= \[)

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

Upvotes: 1

akuiper
akuiper

Reputation: 214927

You can use /.*?(?=\s*\[)/ with match; i.e. 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*\[)/)
)

Upvotes: 1

Related Questions