回答

收藏

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

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

我需要从字符串中提取两个定界符之间包含的一组字符,而不返回定界符本身。
* m" M+ C8 n3 ^一个简单的例子应该会有所帮助:$ x' e$ |, H9 }7 o# E" `
目标:提取方括号之间的子字符串,而不返回括号本身。
4 A, o2 l" B  C* D, z基本字串:This is a test string [more or less]& _* v$ D/ g! l( z! ^1 Q, U
如果我使用以下规则。前任。# ?0 {4 h$ n! ^+ t5 w( B7 }0 S
\ [。*?\]
) |8 X/ q6 e/ N2 I# C" e
% \. E2 O* E8 i6 \比赛是[more or less]。我只需要得到more or less(没有括号)。
, D4 n0 T! h* ~$ S有可能做到吗?) t7 \4 u$ [8 {. X9 {
               
: A5 f5 v! u, o0 h9 z解决方案:
& g- J' K( G+ r3 i4 {1 O               
+ B4 o7 C7 D/ i. V
+ W: [" K- z# \# \) G  q* f% c  V9 o$ C) U. m3 n! h
                简单易行:
/ f) x  S& S6 H& R(?从技术上讲,这是使用先行和后备。请参阅前瞻和零宽度断言。该模式包括:! ~) p. D2 w* B9 ~8 q
前面有一个[未捕获(向后看);
8 L% c) ~3 J- V; P- q( i& V一个非贪婪的捕获群体。停在第一个]是不贪心的;和) Q( Y) K# v/ M% i3 L
后跟一个未捕获的](超前)。2 j9 N+ H" D' h( I8 ]4 ]0 U& B
另外,您也可以捕获方括号之间的内容:- ~+ a& h6 H  j; ^2 |8 _. A
\[(.*?)\]
6 v, o& A) H# C# g/ S  _. H& [, `& ^) ]5 }
并返回第一个捕获的组,而不是整个匹配项。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则