相关疑难解决方法(0)

我们如何匹配^ nb ^ n与Java正则表达式?

这是一系列教育正则表达式文章的第二部分.它显示了向前看符号和嵌套引用如何可以用来匹配非正规languge ñ b ñ.嵌套引用首先介绍在:这个正则表达式如何找到三角形数字?

其中一种原型非常规语言是:

L = { añ bñ: n > 0 }

这是所有非空字符串的语言,由一些数字a后跟相同数量的字符串组成b.在这个语言字符串的例子有ab,aabb,aaabbb.

这种语言可以通过泵浦引理显示为非规则的.它实际上是一种原型上下文无关语言,可以通过无上下文语法 生成S ? aSb | ab.

尽管如此,现代正则表达式实现清楚地认识到的不仅仅是常规语言.也就是说,它们不是形式语言理论定义的"规则".PCRE和Perl支持递归正则表达式,.NET支持平衡组定义.更少的"花哨"特征,例如反向引用匹配,意味着正则表达式不规则.

但这个"基本"功能有多强大?L例如,我们可以用Java正则表达式识别吗?我们也许可以结合lookarounds和嵌套引用,并具有与如工作模式String.matches来匹配字符串一样ab,aabb,aaabbb,等?

参考

相关问题

java regex lookaround capturing-group nested-reference

94
推荐指数
3
解决办法
1万
查看次数

正则表达式使用增加的数字序列Python

说我有一个字符串:

teststring =  "1.3 Hello how are you 1.4 I am fine, thanks 1.2 Hi There 1.5 Great!" 
Run Code Online (Sandbox Code Playgroud)

我希望如下:

testlist = ["1.3 Hello how are you", "1.4 I am fine, thanks 1.2 Hi There", "1.5 Great!"]
Run Code Online (Sandbox Code Playgroud)

基本上,仅在增加的数字上进行分割,其中差值为.1(即1.2到1.3).

有没有办法用正则表达式分割它,但只捕获增加的序号?我在python中编写代码,以便为每个代码重复使用自定义re.compile()并且它很好但是非常笨拙.

像这样的东西(其中parts1_temp是字符串中xx数字的给定列表):

parts1_temp = ['1.3','1.4','1.2','1.5']
parts_num =  range(int(parts1_temp.split('.')[1]), int(parts1_temp.split('.')[1])+30)
parts_search = ['.'.join([parts1_temp.split('.')[0], str(parts_num_el)]) for parts_num_el in parts_num]
#parts_search should be ['1.3','1.4','1.5',...,'1.32']

for k in range(len(parts_search)-1):
    rxtemp = re.compile(r"(?:"+str(parts_search[k])+")([\s\S]*?)(?=(?:"+str(parts_search[k+1])+"))", re.MULTILINE)
    parts_fin = [match.group(0) for match in rxtemp.finditer(teststring)]
Run Code Online (Sandbox Code Playgroud)

但是男人是丑陋的.有没有办法在正则表达式中更直接地执行此操作?我想这是有人在某些方面想要正则表达式的功能,但我找不到任何关于如何解决这个问题的想法(也许纯正的正则表达式是不可能的).

python regex string sequential

9
推荐指数
1
解决办法
304
查看次数