-
求正则表达式高手100
求一条正则表达式,要求: 匹配前面有奇数个字符a的字符zhu, 如'aaxxzaddzhu'可匹配, 'aaxxzddzhu'不匹配,'azhu'匹配, 还请大神们帮忙啊。
问题补充:都没有人知道吗?都已经提高到最高分了啊2012年11月15日 10:42
11个答案 按时间排序 按投票排序
-
采纳的答案
楼主试试这个正则吧,经我测试,完全满足你的要求(改自 Eastsun 提供的更正则):
(?<=^([^a]*a[^a]*)(a[^a]*a[^a]*)*)zhu$2012年11月16日 10:35
-
正则验证:
var str1 = 'aaxxzaddzhu'; var str2 = 'aaxxzddzhu'; var str3 = 'xxzdadzhu'; var reg = /^([^a]*a[^a]*)([^a]*a[^a]*a[^a]*)*(zhu)/; console.info(reg.test(str1)); // true console.info(reg.test(str2)); // false console.info(reg.test(str3)); // true
看了你的评论,知道你想取出“zhu”这个值:
以下是javascript代码:var str1 = 'aaxxzaddzhu'; var str2 = 'aaxxzddzhu'; var str3 = 'azhu'; var reg = /^([^a]*a[^a]*)([^a]*a[^a]*a[^a]*)*(zhu)/; var r = reg.exec(str1); if(r != null) { console.info(r[3]); // r[3] = 'zhu' }
以下是PHP代码:$str1 = 'aaxxzaddzhu'; $str2 = 'aaxxzddzhu'; $str3 = 'azhu'; $reg = "/^([^a]*a[^a]*)([^a]*a[^a]*a[^a]*)*(zhu)/"; preg_match($reg, $str3, $matches); if(!empty($matches)) { echo $matches[3]; // $matches[3] = 'zhu' }
2012年11月16日 12:03
-
多次测试通过
var str1 = 'aaxxzaddzhu'; var str2 = 'aaxxzddzhu'; var str3 = 'xxzdadzhu'; var reg = /^([^a]*a[^a]*)([^a]*a[^a]*a[^a]*)*zhu/; console.info(reg.test(str1)); // true console.info(reg.test(str2)); // false console.info(reg.test(str3)); // true
2012年11月16日 11:19
-
应该能满足你的需求了,给分吧哈哈!
package com.demo.gae.util; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String regex="(((aa)+)|(a+))[^a]*"; String content="aaxxzddzhuarraaaaabbbbbaaacccaaaagggg"; StringBuffer sb = new StringBuffer(); Pattern pattern = Pattern.compile(regex,Pattern.DOTALL); Matcher matcher = pattern.matcher(content); while(matcher.find()) { String data=matcher.group(4); if(data!=null){ matcher.appendReplacement(sb,data+"---"); //matcher.appendReplacement(sb,matcher.group().replaceAll(data, "---")); } } matcher.appendTail(sb); content= sb.toString(); System.out.println(content); } }
2012年11月16日 10:04
-
我觉得你这个要求又不是通用的正则匹配。不如直接得到char数组。
for循环。加a数量统计。发现zhu,计算此时的统计值。是基数得到。
不知道aaazhuaaazhu后面的zhu算不算。
这时就是清空统计的问题。
这样的时间复杂度也是最低的。毕竟是个特殊匹配。又不需要回溯的。
我觉得这个做法比你正则来的要好。2012年11月16日 09:33
-
呃,楼主可以试试这个:"([^a]*a[^a]*)(a[^a]*a[^a]*)*zhu"
下面的java程序可以用来测试,先贴出测试结果:引用future$ java RegexTest
Input: aaxxzaddzhu
yes
Input: aaxxzddzhu
no
Input: azhu
yes
Input: aaazhu
yes
Input: aaaaaaazhu
yes
Input: azazazazazhu
yes
Input: azazazazhu
no
import java.util.*; import java.util.regex.*; public class RegexTest { public static void main(String[] args) { String regex = "([^a]*a[^a]*)(a[^a]*a[^a]*)*zhu"; Scanner sca = new Scanner(System.in); while(true) { System.out.printf("Input: "); String line = sca.nextLine(); System.out.printf(Pattern.matches(regex,line)?"yes\n":"no\n"); } } }
2012年11月15日 17:56
-
使用环视功能。
满足你要求的正则为 "(?<=a+)"
环视功能说明:
(?<=) 肯定逆序环视 子表达式能够匹配左侧文本(环视开始的位置是从当前匹配成功的位置算起)
(?<!) 否定逆序环视 子表达式不能匹配左侧方本
(?=) 肯定顺序环视 子表达式能够匹配右侧文本
(?!) 否定顺序环视 子表达式不能匹配右侧文本2012年11月15日 15:36
-
出现"aaabzhua" 字符串不是"zhu"结尾的需要考虑吗?
出现"aazhuabbbzzhu" 字符串中有多个"zhu"怎么取舍?
如果是以"zhu"结尾的字符串判断其中"a"的个数
var array="dzhu".match(/[a]/ig);
2012年11月15日 11:54
相关推荐
在IT领域,文本处理是日常工作中不可或缺的一部分,而grep、sed、awk和perl这四个工具在处理文本时都广泛地使用了正则表达式。它们各自有着不同的特性和适用场景,理解它们之间的差异有助于我们更高效地进行文本操作...
正则表达式是计算机科学中的一个重要概念,广泛应用于文本处理、数据验证、搜索与替换等多个领域。...同时,不断实践和调试正则表达式,将理论知识转化为实际技能,是成为一名正则表达式高手的关键步骤。
### 正则表达式详解 #### 一、正则表达式概述 正则表达式是一种强大的文本模式匹配工具,广泛应用于编程语言如Java中,用于...通过不断学习和实践,你可以成为一个正则表达式的高手,有效地处理各种文本数据挑战。
### Unix下的正则表达式详解 正则表达式(Regular Expression),简称RE,是一种用于文本模式匹配的强大工具,尤其在Unix环境下,它被广泛应用于grep...在实践中不断尝试和优化正则表达式,是成为Unix高手的必经之路。
正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串模式。它在编程语言中广泛应用,包括C#。本教程旨在通过案例学习,帮助你提升至正则...通过不断学习和练习,你将逐渐成长为正则表达式的高手。
在Delphi编程环境中,正则表达式是一种强大的文本处理工具,用于执行模式匹配和字符串操作。本篇文章将详细探讨在Delphi下使用...在实践中不断探索和学习,你将成为正则表达式的高手,为你的项目添加更多功能和价值。
### 正则表达式基础知识详解 #### 一、正则表达式概述 正则表达式是一种用于模式匹配的强大工具,广泛应用于文本处理领域。...希望本书能帮助读者在正则表达式的道路上越走越远,成为处理文本数据的高手。
正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景...通过不断实践和学习,你将能够运用正则表达式解决更多实际问题,成为处理字符串的高手。
正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理...不断练习,你将成为正则表达式的高手。现在,你可以尝试在自己的项目中应用这些基础知识,体验正则表达式的强大功能。
正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、...通过阅读"正则表达式必知必会"这份教程,你将逐步掌握这些概念,并通过实践成为正则表达式运用的高手。
在Python中,正则表达式是一种强大的文本...本文详细介绍了正则表达式的使用技巧和实际应用,希望能够帮助读者成为Python文本处理的高手。随着实践的深入,相信读者能够更加熟练地运用正则表达式解决各种文本处理问题。
正则表达式,全称Regular Expression,是一种模式匹配语言,用于在文本中查找、替换或提取符合特定模式的字符串。它在IT行业中被广泛应用,包括数据验证、文本搜索与...不断地练习和实践,将使你成为正则表达式的高手。
正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于匹配、查找、替换字符串模式。在编程和数据分析领域,它被广泛应用于...持续实践和查阅相关资料,将助你在短时间内成为正则表达式的高手。
正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换等场景。...在实际应用中,不断实践和积累经验,是成为正则表达式高手的关键。
正则表达式(Regular Expression,简称regex)是用于在文本中匹配...在实际应用中,不断地实践和调试正则表达式,将有助于你成为正则表达式的高手。学习正则表达式,不仅提升了编程技能,也增强了对文本数据的洞察力。
最常用的正则表达式帮助文档 高手进阶必备
在IT行业中,运维人员的日常工作离不开自动化工具的使用,而Shell脚本编程和正则表达式无疑是运维工程师的必备技能。...通过不断积累和优化,运维人员的Shell脚本编程和正则表达式能力会逐渐提高,成为真正的运维高手。
正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于匹配、查找、替换等操作。在编程和数据分析领域,正则表达式扮演着不...记得不断实践和探索,逐渐积累经验,你就能成为正则表达式的高手。
通过不断学习和实践,你可以更好地利用正则表达式解决各种文本处理问题,成为JavaScript编程的高手。对于初学者来说,这个"javascript正则表达式详解.chm"文件会是一个很好的学习资源,它应该包含了详细的解释、实例...