()之间的单个字符的正则表达式,但不包括什么是ouside

问题描述 投票:-1回答:1

我需要一个如下工作的正则表达式,我已经尝试了一天而无法理解它。

(IIILjava/lang/String;Ljava/lang/String;II)V = ['I', 'I', 'I', 'I', 
     'Ljava/lang/String;', 'Ljava/lang/String;', 'I', 'I'] Ignoring whats after )

(IIJ)J = ['I', 'I', 'J']   

(IBZS)Z = ['I', 'B', 'Z', 'S']

到目前为止我已经获得了(I|D|F|Z|B|S|L.+?;),但我无法忽略那些在')之后的角色。

regex split character
1个回答
1
投票
(?<=\([^()]{0,10000})[A-Z][^A-Z()]*(?=[^()]*\))
  • (?<=\([^()]{0,10000})正面看后方确保(之前的位置,其次是除()之外的任何字符,介于0到10000次之间。可以根据需要调整上限,但不能是无限的。
  • [A-Z]匹配任何大写的ASCII字母
  • [^A-Z()]*匹配除大写ASCII字母,()之外的任何字符数次
  • (?=[^()]*\))确定以下内容的正面预测是除()之外的任何字符,其次是)

结果:

['I', 'I', 'I', 'I', 'Ljava/lang/String;', 'Ljava/lang/String;', 'I', 'I']
['I', 'I', 'J']
['I', 'B', 'Z', 'S']

示例代码:See in use here

© www.soinside.com 2019 - 2024. All rights reserved.