回答

收藏

正则表达式,查找不包括定界符的两个字符之间包含的字符串

技术问答 技术问答 486 人阅读 | 0 人回复 | 2023-09-14

我需要从字符串中提取两个定界符之间包含的一组字符,而不返回定界符本身。, F8 K3 X3 c- u) d9 e4 l
一个简单的例子应该会有所帮助:- q( S: n& B$ S$ D
目标:提取方括号之间的子字符串,而不返回括号本身。
  V# K0 u" Q+ q8 C基本字串:This is a test string [more or less]$ Z" L, X: P/ r, c
如果我使用以下规则。前任。) l, R. j  I. j+ P6 F
\ [。*?\]6 U( F4 N+ |+ d7 G" C7 {  E5 S
1 b& S& e) U" J2 I( D. N) U
比赛是[more or less]。我只需要得到more or less(没有括号)。; S1 ^5 y1 ^" h* j* W2 O
有可能做到吗?
4 P, E$ ~; M; c0 q& _  d% \2 c               
1 y1 d0 L; n" m% A解决方案:
+ a4 D. `& O6 Y+ F8 x               
1 X( d2 C! y, J; N: [: w
/ t8 }! `: w% \: T  W- s; J
, ~$ @7 B/ X5 d" R8 e4 v( m& w) @                简单易行:  \" |* v0 }2 h: y+ c( g
(?从技术上讲,这是使用先行和后备。请参阅前瞻和零宽度断言。该模式包括:
7 E3 ^; o+ a3 Z) d# b前面有一个[未捕获(向后看);
& K2 P4 \' m) ]' v6 Q8 L一个非贪婪的捕获群体。停在第一个]是不贪心的;和- B' ~6 J" T! N9 c# X2 H  K8 X3 r
后跟一个未捕获的](超前)。! E) o- P) R5 }; T% M9 v" o+ O
另外,您也可以捕获方括号之间的内容:4 j8 n* u6 M& f5 m  a: Q
\[(.*?)\]
6 z- ?- e1 s3 i
( l: g6 T. v3 y3 [) C5 T并返回第一个捕获的组,而不是整个匹配项。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则