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

Categories

0 votes
238 views
in Technique[技术] by (71.8m points)

Regex find word in the string

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

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

1 Answer

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...