回答

收藏

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

技术问答 技术问答 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( |并返回第一个捕获的组,而不是整个匹配项。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则