正则表达式-求助正则达人一个棘手的简单问题

问题描述

求助正则达人一个棘手的简单问题

文本内容如下:

节点1
节点2
节点3
节点4
节点5
节点6

需求:想要匹配 以“节点2"为开头起始,以"节点4"【或】"节点5"为结束字符串之间的文本(以最近的一个结束字符串为准<例子中期待匹配的内容是【节点4】>)

自己写的垃圾式子: “ 节点2([sS]*)(?:节点4|节点5) ”
结果集中取$1的结果,但是取出内容是“【节点3 节点4】”
上面的结果不是我想要的,我想要的是匹配结果为 “【节点3】”,即,以距离节点2最近的节点4位匹配结果,想要实现当匹配了 节点2->节点4 就不匹配 节点2 -> 节点5 之间的内容了
ps::有没有比类似 节点2(^节点4|节点5)(?:节点4|节点5) 更好的表达式

解决方案

 节点2([sS]+?)节点[45]
 <script>
    var s = '节点1    节点2    节点3    节点4    节点5    节点6';
    var m = /节点2([sS]+?)节点[45]/.exec(s);
    alert(m[1])
    s = '节点1    节点2    节点3    节点xxx    节点5    节点4    节点6';
    m = /节点2([sS]+?)节点[45]/.exec(s);
    alert(m[1])
</script>

解决方案二:

求助一个问题

解决方案三:

String str = "节点2节点3节点5节点4";
String match = "^节点2{1}.*(节点5|节点4){1}$";//以节点2 开始,节点4或节点5结束
System.out.println(str.matches(match));

解决方案四:

好了我自己恶补一晚上正则,自己解决了,感谢回答我的两个朋友。就差一个元字符——非贪婪模式即可

时间: 2024-08-04 03:00:49

正则表达式-求助正则达人一个棘手的简单问题的相关文章

正则表达式创建方式的区别及编写简单的正则方式(js学习总结)

在字面量方式中,我们//之间包起来的所有的内容都是元字符,有的具有特殊意义,大部分都是代表本身含义的普通的元字符 var name = 'wo'; var reg = /^\d+"+name+"\d+$/ 为了解决上述想在正则里面加上一个变量这样的需求,我们只能使用实例创建的方式了 var reg = new RegExp("^\\d+"+name+"\\d+$","g") 字面量方式和实例创建的方式在正则中的区别? 1.字面

求一个正则表达式(正则高手来,小弟谢过了)

问题描述 求一个正则表达式(正则高手来,小弟谢过了) 在java代码中,有一个字符串 String str = "aa{bb}cc{{dd}}ee": 我用str的replace()方法: 求一个替换str中的字符'{' 和字符'}'的一个正则表达式 解决方案 比如把{.}都替换成_ String newStr = str.replaceAll("[{|}]","_"); 解决方案二: 高手请进!小弟急求 解决方案三: String str =

C# 获取a标签的正则表达式求助

问题描述 C# 获取a标签的正则表达式求助 例如该链接为< a href="http://www.baidu.com" title="标题">标签内容</ a>,求一个正则表达式能匹配到到a标签href.title和"标签内容"的内容,title的位置可能在href前面,也有可能在href后面,或者就没有title 解决方案 用jQuery不行么? 获取a标签. 解决方案二: 直接用xml类库解析xml节点.比正则容易.

lex-编译原理 正则表达式 求助

问题描述 编译原理 正则表达式 求助 在lex程序中,如何写一个正则表达式过滤掉注释并统计行数 注释形式如下: /* .......*/ 注意这种注释可能分成多行! 求大神 解决方案 关于正则表达式,作为软件工程师应该比较熟悉了.所谓正则表达式,就是表示字符串的格式.正则表达式r完全由它所匹配的串集来定义.这个集合称为由正则表达式生成的语言,写作L(r).此处的语言只是表示"串的集合",它与程序设计语言并无特殊关系. ? 基本的正则表达式 正则表达式......答案就在这里:编译原理之

regex-求助:Qt正则表达式求助

问题描述 求助:Qt正则表达式求助 字符串内容为: 2015-09-16 14:30:52, 1365 2015-09-16 14:30:53, 1368 2015-09-16 14:30:54, 1375 2015-09-16 14:30:55, 1370 我写的正则表达式为:QRegExp rx(tr(",sd{1,}")); 在Regex Match Tracer里验证是对的,怎么到Qt里就错了呢? 解决方案 d{4}-d{2}-d{2}sd{2}:d{2}:d{2},sd{1,

请教各位达人一个问题 如何使用jQuery Mobile让pc网页自适应手机屏幕

问题描述 请教各位达人一个问题 如何使用jQuery Mobile让pc网页自适应手机屏幕 请教各位达人一个问题 如何使用jQuery Mobile让pc网页自适应手机屏幕 解决方案 http://skyonsea.com/html-width%E8%87%AA%E5%8A%A8%E9%80%82%E5%BA%94%E6%89%8B%E6%9C%BA%E5%B1%8F%E5%B9%95%E5%A4%A7%E5%B0%8F/ 这个网页是关于使用jQuery Mobile让PC网页自适应手机屏幕的文

java正则表达式,如何表示一个非某个字符的匹配

问题描述 java正则表达式,如何表示一个非某个字符的匹配 知道 非所有字符 是[^a-z] 但是 怎么表示非 某一个字符? 解决方案 除了a字母以外: Pattern pattern = Pattern.compile("[b-z&&[^a]]+"); 解决方案二: a-z,其实就是表示26个小写字母,如果是一个的话,就写一个好了.[^a] 解决方案三: 可以反向,就是找包含某个字符 public static void main(String[] args) { P

python正则匹配一个html中的几个url

问题描述 python正则匹配一个html中的几个url 在一个网页中匹配出如下的几个url,从url开始匹配不是从href开始匹配 href="http://redirect.wangpansou.cn/redirect.php?url=http%3A%2F%2Fpan.baidu.com%2Fshare%2Flink%3Fuk%3D2803502175%26shareid%3D3310887851%26third%3D0" href="http://redirect.wa

java正则表达式,怎么写一个match包含空格的pattern?

问题描述 java正则表达式,怎么写一个match包含空格的pattern? public static void main(String[] args){ Pattern pattern = Pattern.compile("\s*|t|r|n");//这里不会写 Matcher m=pattern.matcher("vv vv"); System.out.println(m.matches()); } 解决方案 Pattern pattern = Pattern