正则表达式,查找不包括定界符的两个字符之间包含的字符串
技术问答
409 人阅读
|
0 人回复
|
2023-09-14
|
我需要从字符串中提取两个定界符之间包含的一组字符,而不返回定界符本身。
( J9 m4 d) [1 e% K, ?) l一个简单的例子应该会有所帮助:* |& g- Q- j$ l- \9 Y
目标:提取方括号之间的子字符串,而不返回括号本身。+ k, F: W' w& e! p. q" d) |* ?% `% f
基本字串:This is a test string [more or less]
( k: }/ X+ ^$ l9 ]如果我使用以下规则。前任。
1 `, @- {$ L/ {; l2 H\ [。*?\]
2 F( o& h: r2 J! ^6 D& M
/ [( k v, S6 k1 i6 z比赛是[more or less]。我只需要得到more or less(没有括号)。# L7 w# J7 N5 n5 i6 B0 C& a
有可能做到吗?
U7 S( K8 c5 t; z% t, p! N. p
5 o9 ?2 U, a/ F8 H解决方案:4 e# z4 R h+ @- | f6 I! q
& t+ X3 d# H$ X7 M/ x: G8 f. ?
- }! E8 K% Z" r3 R6 P4 f2 Q; V
/ J3 I: D* @/ U8 o5 t6 n( A
简单易行:) H& Z5 W5 l& a$ V6 ~* E
(?从技术上讲,这是使用先行和后备。请参阅前瞻和零宽度断言。该模式包括:8 H/ ^0 B5 b2 J0 e, d9 M) I* O8 z: f
前面有一个[未捕获(向后看);
/ G: A7 b( d6 W7 L) B1 U) Y9 o% N一个非贪婪的捕获群体。停在第一个]是不贪心的;和2 W3 T e+ V' K$ |; ?
后跟一个未捕获的](超前)。0 I. {1 h* e8 @6 E
另外,您也可以捕获方括号之间的内容:, T/ H5 Y# }* H
\[(.*?)\]# }4 ~/ e" m, s& f L5 B0 P
* N, T! b8 |. @* Y. g
并返回第一个捕获的组,而不是整个匹配项。 |
|
|
|
|
|