正则表达式,查找不包括定界符的两个字符之间包含的字符串
技术问答
190 人阅读
|
0 人回复
|
2023-09-14
|
我需要从字符串中提取两个定界符之间包含的一组字符,而不返回定界符本身。
$ e' [ t6 y/ V4 W/ b. o' x一个简单的例子应该会有所帮助:
' |( z: u- `# Z$ R0 r: h! K目标:提取方括号之间的子字符串,而不返回括号本身。6 j8 B2 s5 }$ w; ]4 e- g1 R
基本字串:This is a test string [more or less]( ]! a6 P; `* `& J1 y
如果我使用以下规则。前任。
/ E/ J+ Q) W7 a! K4 n# e\ [。*?\]/ S1 e# d7 i# q. I" {
5 X8 e3 F( n) F& Z: p' U
比赛是[more or less]。我只需要得到more or less(没有括号)。9 K1 t9 c& n( f
有可能做到吗?& g& w/ }+ A# R' R
. ]# @+ k" Y+ d3 p5 D2 S
解决方案:
6 S1 D, O, G, g5 I+ y! L
2 n6 m; h! ]# ~/ C* d `7 g3 s5 i/ U9 ?7 t
: F4 V0 u# D# `, T) }, p, V2 t
简单易行:& q E7 u: w4 `. t* I( Y* c+ \
(?从技术上讲,这是使用先行和后备。请参阅前瞻和零宽度断言。该模式包括:
9 R3 F) q- Q; o K% w3 h- H前面有一个[未捕获(向后看);
5 P9 r. Q# S( { D3 l! \7 z ?5 I一个非贪婪的捕获群体。停在第一个]是不贪心的;和
0 e4 j2 U/ ]5 }: t& q后跟一个未捕获的](超前)。
2 Z9 u1 W$ `, v: v# H$ {" Z$ j7 g: }* I另外,您也可以捕获方括号之间的内容:
& {$ k3 U4 f l\[(.*?)\]
4 t' g& u) B& Q
; d7 b% T9 F. o. C# y9 q" @并返回第一个捕获的组,而不是整个匹配项。 |
|
|
|
|
|