Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

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

Regex to first occurrence only?

Let's say I have the following string:

this is a test for the sake of testing. this is only a test. The end.

and I want to select this is a test and this is only a test. What in the world do I need to do?

The following Regex I tried yields a goofy result:

this(.*)test (I also wanted to capture what was between it)

returns this is a test for the sake of testing. this is only a test

It seems like this is probably something easy I'm forgetting.

See Question&Answers more detail:os

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

1 Reply

0 votes
by (71.8m points)

The regex is greedy meaning it will capture as many characters as it can which fall into the .* match. To make it non-greedy try:

this(.*?)test

The ? modifier will make it capture as few characters as possible in the match.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...