正则表达式,查找不包括定界符的两个字符之间包含的字符串
技术问答
307 人阅读
|
0 人回复
|
2023-09-14
|
我需要从字符串中提取两个定界符之间包含的一组字符,而不返回定界符本身。# t |5 V# ]. q
一个简单的例子应该会有所帮助:9 ]) Y6 ~2 u, | a' l+ X( A: G7 M
目标:提取方括号之间的子字符串,而不返回括号本身。
; B: p; S9 ?: }( H基本字串:This is a test string [more or less]
# Z$ l) p# q; e$ a如果我使用以下规则。前任。
- i9 N& F m t$ K3 |, J( L2 q8 y$ L8 A: x\ [。*?\]5 M3 |! f1 `5 o& z5 I/ u
/ w5 W5 i8 Z; K: w- @- f$ Q- _
比赛是[more or less]。我只需要得到more or less(没有括号)。
8 N" i! r# ?$ C有可能做到吗?
" `, |% ] ~! M1 V$ L* H8 U' c8 M
" |, G# ~7 H8 ?解决方案:
$ M! A9 j4 d* v& ]; z# \$ ^
% l9 h4 Y w! f: h* l0 V& T: w6 U+ a' a3 x6 M$ ?# K
3 e6 i& Z4 o) |5 {$ i8 | 简单易行:% B' s' p) h& }7 p6 Z/ S
(?从技术上讲,这是使用先行和后备。请参阅前瞻和零宽度断言。该模式包括:* T6 ]" C) u* w: B
前面有一个[未捕获(向后看);
* p& f) f. D2 j9 Q7 K/ T. U一个非贪婪的捕获群体。停在第一个]是不贪心的;和
$ A( S" p& G7 J7 w, \# d后跟一个未捕获的](超前)。) ?) U4 T0 a) T3 t7 G1 G
另外,您也可以捕获方括号之间的内容:
% N0 L m+ N( g3 p/ n. h2 C- q\[(.*?)\]& Q" P9 X0 r& X+ B, V! I
4 f9 W W3 |' P( |并返回第一个捕获的组,而不是整个匹配项。 |
|
|
|
|
|