Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

In general terms I want to find in the string some substring but only if it is contained there.

I had expression :

^.*(pass)?.*$

And test string:

high pass h3 

When I test the string via expression I see that whole string is found (but group "pass" not):

match : true
groups count : 1  
group : high pass h3 

But that I needed, is that match has 2 groups : 1: high pass h3 2: pass

And when I test, for example, the string - high h3, I still had 1 group found - high h3

How can I do this?

question from:https://stackoverflow.com/questions/9348326/regex-find-word-in-the-string

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
242 views
Welcome To Ask or Share your Answers For Others

1 Answer

Use this one:

^(.*?(pass)[^$]*)$
  1. First capture for the entire line.
  2. Second capture for the expected word.

Check the demo.

More explanation:

          ┌ first capture
          |
 ?------------------?
^(.*?(pass)[^$]*)$
  ?-?          ?---?
   | ?--------?  |
   |     |       └ all characters who are not the end of the string
   |     |
   |     └ second capture
   |
   └ optional begin characters

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...