百度
360搜索
搜狗搜索

正则表达式或者怎么表示,正则表达式中的或怎么表示详细介绍

本文目录一览: 正则表达式中的或怎么表示

(1|2|3) 用单竖线来表示或

正则表达式中至少有一个或者多个用什么符号表示

正则表达式中至少有一个或者多个用**+**符号表示。例如,正则表达式a+b匹配一个或多个a后面跟着一个b,如ab、aab、aaab等。
*,0次或更多次
?,0次或1次
+,1次或更多次
用问号表示 ?
用法 \d? 表示一个数字或者多个数字组成的字符串

正则表达式或者怎么写

‘\[\d+,\d+\]’,\[ 匹配左边的中括号\d+ 匹配一串数字, 匹配逗号后面表达式的含义和上面类似
正则表达式2
竖线“|”就是或的意思。意思是将两个匹配条件进行逻辑“或”(or)运算。
例如正则表达式(him|her) 匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them."。注意:这个元字符不是所有的软件都支持的。
而最简单的元字符是点,它能够匹配任何单个字符(注意不包括换行符)。
扩展资料:求值运算:
进行逻辑表达式求值运算,不但要注意逻辑运算符本身的运算规则,而且还必须要遵循下面的两条原则:
1、对逻辑表达式从左到右进行求解。
2、短路原则:在逻辑表达式的求解过程中,任何时候只要逻辑表达式的值已经可以确定,则求解过程不再进行,求解结束。
具体理解逻辑表达式运算规则时可以先找到表达式中优先级最低的逻辑运算符,以这些运算符为准将整个逻辑表达式分为几个计算部分。
从最左边一个计算部分开始,按照算术运算、关系运算和逻辑运算的规则计算该部分的值。每计算完一个部分就与该部分右边紧靠着的逻辑运算符根据真值表进行逻辑值判断。
如果已经能够判断出整个逻辑表达式的值则停止其后的所有计算;只有当整个逻辑表达式的值还不能确定的情况下才进行下一个计算部分的计算。
参考资料来源:百度百科-正则表达式
正则中的或是用 '|' 来表示的
你上面的要求 ab(1|2) 可以实现~
ad[12]也可以实现,不过用的是字符集的概念

正则表达式“或“的使用

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。
正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
扩展资料
正则表达式应用——实例应用
1.验证用户名和密码:("^[a-zA-Z]\w{5,15}$")正确格式:"[A-Z][a-z]_[0-9]"组成,并且第一个字必须为字母6~16位;
2.验证电话号码:("^(\d{3,4}-)\d{7,8}$")正确格式:xxx/xxxx-xxxxxxx/xxxxxxxx;
3.验证手机号码:"^1[3|4|5|7|8][0-9]{9}$";
4.验证身份证号(15位):"\d{14}[[0-9],0-9xX]",(18位):"\d{17}(\d|X|x)";
5.验证Email地址:("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");
6.只能输入由数字和26个英文字母组成的字符串:("^[A-Za-z0-9]+$");
7.整数或者小数:^[0-9]+([.][0-9]+){0,1}$
8.只能输入数字:"^[0-9]*$"。
9.只能输入n位的数字:"^\d{n}$"。
参考资料:
百度百科-正则表达式
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它用以描述在查找文字主体时待匹配的一个或多个字符串。
正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。每一门计算机编程语言,都支持正则表达式。正则表达式能够进行数据隐藏,数据采集,数据过滤和数据验证。
扩展资料:
使用正则表达式创建正则对象方法如下:
1.字面量写法-以斜杠表示开始和结束; var regex = /xyz/。
2.内置构造函数生成-通过实例化得到对象;var regex = new RegExp('xyz')。
正则表达式里面字符串含义:
test(str) :判断字符串中是否具有指定模式的子串,返回结果是一个布尔类型的值;exec(str) :返回字符串中指定模式的子串,一次只能获取一个与之匹配的结果。
search(reg) :与indexOf非常类似,返回指定模式的子串在字符串首次出现的位置。
match(reg): 以数组的形式返回指定模式的字符串,可以返回所有匹配的结果。
replace(reg,'替换后的字符') :把指定模式的子串进行替换操作。
split(reg) :以指定模式分割字符串,返回结果为数组。
参考资料来源:百度百科—正则表达式
正则表达式(英文:Regular Expression),在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。“正则表达式”通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
基本概念 一个正则表达式通常被称为一个模式 (pattern),为用来描述或者匹配一系列符合某个句法规则的字符串。例如:Handel、H??ndel 和 Haendel 这三个字符串,都可以由 "H(a|??|ae)ndel" 这个模式来描述。大部分正则表达式的形式都有如下的结构:替换 | 竖直分隔符代表替换。例如"gray|grey"可以匹配grey或gray。数量限定 某个字符后的数量限定符用来限定前面这个字符允许出现的个数。最常见的数量限定符包括“+”,“?”和“*”(不加数量限定则代表出现一次且仅出现一次):+ 加号代表前面的字符必须至少出现一次。(1次,或多次)。例如,"goo+gle"可以匹配google,gooogle,goooogle等;? 问号代表前面的字符最多只可以出现一次。(0次,或1次)。例如,"colou?r"可以匹配colour或者color;* 星号代表前面的字符可以不出现,也可以出现一次或者多次。(0次,或1次,或多次)。例如,"0*42"可以匹配42,042,0042,00042等。匹配 圆括号可以用来定义操作符的范围和优先度。例如,"gr(a|e)y"等价于"gray|grey","(grand)?father"匹配father和grandfather。上述这些构造子都可以自由组合,因此,"H(ae?|??)ndel"和"H(a|ae|??)ndel"是相同的。精确的语法可能因不同的工具或程序而异。历史 最初的正则表达式出现于理论计算机科学的自动控制理论和形式语言理论中。在这些领域中有对计算(自动控制)的模型和对形式语言描述与分类的研究。1940年代,Warren McCulloch与Walter Pitts将神经系统中的神经元描述成小而简单的自动控制元。在1950年代,数学家斯蒂芬·科尔·克莱尼利用称之为正则集合的数学符号来描述此模型。肯·汤普逊将此符号系统引入编辑器QED,然后是Unix上的编辑器ed,并最终引入grep。自此,正则表达式被广泛地使用于各种Unix或者类似Unix的工具,例如Perl。Perl正则表达式源自于Henry Spencer写的regex,它已经演化成了pcre(Perl兼容正则表达式Perl Compatible Regular Expressions),一个由Philip Hazel开发的,为很多现代工具所使用的库。各计算机语言之间的正则表达式的整合目前开展的很差。未来的Perl6的子项目Apocalypse的设计中已考虑到了这点。形式语言理论 正则表达式可以用形式语言理论的方式来表达。正则表达式由常量和算子组成,它们分别指示字符串的集合和在这些集合上的运算。给定有限字母表 Σ 定义了下列常量:(“空集”) ?? 指示集合 ?? (“空串”) ε 指示集合 {ε} (“文字字符”) 在 Σ 中的 a 指示集合 {a} 定义了下列运算:(“串接”) RS 指示集合 { αβ | α ∈ R ∧ β ∈ S }。例如 {"ab"|"c"}{"d"|"ef"} = {"abd", "abef", "cd", "cef"}。 (“选择”) R|S 指示 R 和 S 的并集。 (“Kleene星号”) R* 指示包含 ε 并且闭合在字符串串接下的 R 的最小超集。这是可以通过 R 中的零或多个字符串的串接得到所有字符串的集合。例如,{"ab", "c"}* = {ε, "ab", "c", "abab", "abc", "cab", "cc", "ababab", ... }。 上述常量和算子形成了克莱尼代数。很多课本使用对选择使用符号 ∪, + 或 ∨ 替代竖杠。为了避免括号,假定 Kleene 星号有最高优先级,接着是串接,接着是并集。如果没有歧义则可以省略括号。例如,(ab)c 可以写为 abc 而 a|(b(c*)) 可以写为 a|bc*。例子:a|b* 指示 {ε, a, b, bb, bbb, ...}。 (a|b)* 指示由包括空串、任意数目个 a 和 b 字符组成的所有字符串的集合。 ab*(c|ε) 指示开始于一个 a 接着零或多个 b 和最终可选的一个 c 的字符串的集合。 正则表达式的形式定义故意非常精简,避免定义多余的量词 ? 和 +,它们可以被表达为: a+ = aa* 和 a? = (a|ε)。有时增加补算子 ~ ;~R 指示在 Σ* 上的不在 R 中的所有字符串的集合。补算子是多余的,因为它使用其他算子来表达(尽管计算这种表示的过程是复杂的,而结果可能指数性的增大)。这种意义上的正则表达式可以表达正则语言,精确的是可被有限状态自动机接受的语言类。但是在简洁性上有重要区别。某类正则语言只能用大小指数增长的自动机来描述,而要求的正则表达式的长度只线性的增长。正则表达式对应于乔姆斯基层级的类型-3文法。在另一方面,在正则表达式和不导致这种大小上的爆炸的非确定有限状态自动机(NFA)之间有简单的映射;为此 NFA 经常被用作正则表达式的替代表示。我们还要在这种形式化中研究表达力。如下面例子所展示的,不同的正则表达式可以表达同样的语言: 这种形式化中存在着冗余。有可能对两个给定正则表达式写一个算法来判定它们所描述的语言是否本质上相等,简约每个表达式到极小确定有限自动机,确定它们是否同构(等价)。这种冗余可以消减到什么程度? 我们可以找到仍有完全表达力的正则表达式的有趣的子集吗? Kleene 星号和并集明显是需要的,但是我们或许可以限制它们的使用。这提出了一个令人惊奇的困难问题。因为正则表达式如此简单,没有办法在语法上把它重写成某种规 范形式。过去公理化的缺乏导致了星号高度问题。最近 Dexter Kozen 用克莱尼代数公理化了正则表达式。很多现实世界的“正则表达式”引擎实现了不能用正则表达式代数表达的特征。表达式全集 正则表达式有多种不同的风格。下表是在PCRE中元字符及其在正则表达式上下文中的行为的一个完整列表:字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。序列“\\”匹配“\”而“\(”则匹配“(”。^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。$匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。*匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。+匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。?匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。{n}n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。{n,}n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。{n,m}m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。?当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。.匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“[.\n]”的模式。(pattern)匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“\(”或“\)”。(?:pattern)匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用“或”字符(|)来组合一个模式的各个部分是很有用。例如,“industr(?:y|ies)就是一个比”industry|industries'更简略的表达式。(?=pattern)正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如, “Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中 的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。(?!pattern)负向预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如 “Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中 的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始x|y匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。[xyz]字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。[^xyz]负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”。[a-z]字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。[^a-z]负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。\b匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。\B匹配非单词边界。“er\B”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。\cx匹配由x指明的控制字符。例如,\cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。\d匹配一个数字字符。等价于[0-9]。\D匹配一个非数字字符。等价于[^0-9]。\f匹配一个换页符。等价于\x0c和\cL。\n匹配一个换行符。等价于\x0a和\cJ。\r匹配一个回车符。等价于\x0d和\cM。\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]。\S匹配任何非空白字符。等价于[^\f\n\r\t\v]。\t匹配一个制表符。等价于\x09和\cI。\v匹配一个垂直制表符。等价于\x0b和\cK。\w匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。\W匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。\xn匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“\x41”匹配“A”。“\x041”则等价于“\x04”&“1”。正则表达式中可以使用ASCII编码。.\num匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。\n标识一个八进制转义值或一个向后引用。如果\n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。\nm标识一个八进制转义值或一个向后引用。如果\nm之前至少有nm个获得子表达式,则nm为向后引用。如果\nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则\nm将匹配八进制转义值nm。\nml如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。\un匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,\u00A9匹配版权符号(??)。范例 以下以PHP的语法所写的范例验证字串是否只含数字与英文, 字串长度并在4~16个字符之间
<!--?php$str = 'a1234';
if (preg_match("^[a-zA-Z0-9]{4,16}$", $str)) {
echo "验证成功";
} else {
echo "验证失败";
}
?> 简易的台湾身份证字号验证
<!--?php$str = 'a1234';
if (preg_match("^[A-Z]{1}[1-2]{1}[0-9]{8}$", $str)) {
echo "验证成功";
} else {
echo "验证失败";
}
?>
在正则表达式中,有一种意义特殊的构造,即元字符。目前已知的元字符有很多,如 *、?、+ 和 {} 字符。其他字符在正则表达式语言中都有特殊的含义。这些字符包括:$ ^ . [ ( | ) ] 和 \。
.(句点或点)元字符是最简单但最常用的一个字符。它可匹配任何单字符。如果要指定某些模式可包含任意组合的字符,使用句点非常有用,但一定要在特定长度范围内。此外,我们知道表达式将对包含在较长字符串中的所有模式进行匹配,假如只需要精确匹配模式,又该怎么办?这在验证方案中经常出现,例如,要确保用户输入的邮政编码或电话号码的格式正确。使用 ^ 元字符可指定字符串(或行)的开始,使用 $ 元字符可指定字符串(或行)的结束。通过将这些字符添加到模式的开始和结束处,可强制模式仅匹配精确匹配的输入字符串。如果 ^ 元字符用在方括号 [ ] 指定的字符类的开头,也有特殊的含义。具体内容见下。
\ (反斜杠)元字符既可根据特殊含义“转义”字符,也可指定预定义集合元字符的实例。同样,具体内容见下。为了在正则表达式中包括文字样式的元字符,必须使用反斜杠进行“转义”。例如,如果要匹配以“c:\”开始的字符串,可使用:^c:\\。注意,要使用 ^ 元字符指出字符串必须以此模式作为开始,然后用反斜杠元字符转义文字反斜杠。
|(管道)元字符用于交替指定,特别用于在模式中指定“此或彼”。例如,a|b 将匹配包含“a”或“b”的任何输入内容,这与字符类 [ab] 非常类似。
最后,括号 ( ) 用于给模式分组。它允许使用限定符让一个完整模式出现多次。为了便于阅读,或分开匹配特定的输入部分,可能允许分析或重新设置格式。
使用目前提供的工具可以完成很多工作。但是,要使用 [0-9] 表示模式中的每个数值数字,或(更糟)使用 [0-9a-zA-Z]表示任何字母数字字符,还有一段相当漫长的过程。为了减轻处理这些常用但冗长模式的痛苦,事先定义了预定义元字符集合。正则表达式的不同实现定义了不同的预定义元字符集合。这些预定义元字符的标准语法是,在反斜杠 \ 后跟一个或多个字符。多数预定义元字符只有一个字符,它们的使用很容易,是冗长字符类的理想替代字符。以下是两个示例:\d 匹配所有数值数字,\w 匹配所有单词字符(字母数字加下划线)。例外情况是一些特定字符代码匹配,此时必须指定所匹配字符的地址,如 \u000D 将匹配 Unicode 回车符。下面列出一些最常用的字符类及其等效的元字符。(以上内容取自.net正则表达式)
元字符 说明与等效字符类
\a 匹配铃声(警报);\u0007
\b 匹配字符类外的字边界,它匹配退格字符,\u0008
\t 匹配制表符,\u0009
\r 匹配回车符,\u000D
\w 匹配垂直制表符,\u000B
\f 匹配换页符,\u000C
\n 匹配新行,\u000A
\e 匹配转义符,\u001B
\040 匹配 3 位 8 进制 ASCII 字符。\040 表示空格(十进制数 32)。
\x20 使用 2 位 16 进制数匹配 ASCII 字符。此例中,\x2- 表示空格。
\cC 匹配 ASCII 控制字符,此例中是 ctrl-C。
\u0020 使用 4 位 16 进制数匹配 Unicode 字符。此例中 \u0020 是空格。
\* 不代表预定义字符类的任意字符都只作为该字符本身对待。因此,\* 等同于 \x2A(是文字 *,不是 * 元字符)。
\p{name} 匹配已命名字符类“name”中的任意字符。支持名称是 Unicode 组和块范围。例如,Ll、Nd、Z、IsGreek、IsBoxDrawing 和 Sc(货币)。
\p{name} 匹配已命名字符类“name”中不包括的文本。
\w 匹配任意单词字符。对于非 Unicode 和 ECMAScript 实现,这等同于 [a-zA-Z_0-9]。在 Unicode 类别中,这等同于 [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]。
\W \w 的否定,等效于 ECMAScript 兼容集合 [^a-zA-Z_0-9] 或 Unicode 字符类别 [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}]。
\s 匹配任意空白区域字符。等效于 Unicode 字符类 [\f\n\r\t\v\x85\p{Z}]。如果使用 ECMAScript 选项指定 ECMAScript 兼容方式,\s 等效于 [ \f\n\r\t\v] (请注意前导空格)。
\S 匹配任意非空白区域字符。等效于 Unicode 字符类别 [^\f\n\r\t\v\x85\p{Z}]。如果使用 ECMAScript 选项指定 ECMAScript 兼容方式,\S 等效于 [^ \f\n\r\t\v] (请注意 ^ 后的空格)。
\d 匹配任意十进制数字。在 ECMAScript 方式下,等效于 Unicode 的 [\p{Nd}]、非 Unicode 的 [0-9]。
\D 匹配任意非十进制数字。在 ECMAScript 方式下,等效于 Unicode 的 [\p{Nd}]、非 Unicode 的 [^0-9]。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
它是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,模式描述在搜索文本时要匹配的一个或多个字符串。
扩展资料:
正则表达式的特点是:
1. 灵活性、逻辑性和功能性非常强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。
参考资料:正则表达式-百度百科
正则表达式,又称规则表达式。是计算机科学的一个概念。
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
扩展资料
正则表达式的作用:
1、匹配
检查字符串是否符合正则表达式中的规则,有一次不匹配,则返回false。如:
String str="abc";
String reg="[a-zA-Z]\\d?";//次表达式表示字符串的第一位只能是字母,第二位只能是数字或没有boolean flag=str.matches(reg);//返回结果为true。
2、切割
所谓切割,即是按一定的规则将字符串分割成多个子字符串,如:
String str="zhangsan,lishi,wangwu"。
String reg=",";//表示以逗号作为切割符。
String[] arr=str.split(reg);//返回结果为{“zhangsan”,"lisi","wangwu}。
3、替换
即将字符串中符合规则的字符替换成指定字符,如:
String str="sfhjhfh136hjasdf73466247fsjha8437482jfjsfh746376"。
str.replaceAll("\\d{3,}","#");//表示将连续出现三个或三个以上的数字替换成“#”。
参考资料来源:百度百科-正则表达式

阅读更多 >>>  逻辑运算符有哪些,c语言逻辑运算符有哪些,及运算先后顺序?

正则表达式中的“或”

仅仅只匹配一个字符,那没有区别。如果2个以上字符就有区别了中括号和小括号的作用是完全不同的。
[abc] 只是一个简单的字符类,匹配其中任意一个字符,或区间内字符
(a|b|c) 是分组,会返回匹配到的项
例如:(aba|abc|aca|acb) 等同 a(b[ac]|c[ab])
主要一点:两个符号的使用方法是不一样的。
第一个字符串S,[0-9]表示有一个0到9之间的一个数字,{1,20}表示前面的那个数字至少要重复1次,最多20次,^:表示与字符串开始的地方相匹配,不匹配任何字符,比如:表达式“^aaa”,在匹配“xxx
aaa
xxx”,是会匹配失败,只有“aaa”,位于开头是才会匹配成功,如"aaa
xxx
xxx",$表示与字符串结束的地方相匹配,不匹配任何字符,比如:表达式“aaa$”,在匹配“xxx
aaa
xxx”,是会匹配失败,只有“aaa”,位于结尾是才会匹配成功,如"xxx
xxx
aaa"。
第二个字符串中,\w表示任意一个字母,数字或下划线,\W表示,匹配所有与\w不匹配的字符,\d表示0-9中的任意一个数字,~,表示取反,是二进制中取反。
不知这样讲是否明白:
public class Test2 {
public static void main(String[] args) {
System.out.println("abc".matches("[abc]"));//[abc]表示a,b or c.注意这样写后面要加+或*,单独这样输出false
System.out.println("abc".matches("[abc]+"));//[abc]表示a,b or c,此时输出true
System.out.println("abab".matches("[abc]+"));//输出true,因为字符串"abab"里的元素[abc]中都有
System.out.println("abc".matches("[ab]+"));//输出false,因为字符串"abc"中有[ab]里没有的元素。
System.out.println("abc".matches("(a|b|c)"));//(a|b|c)是或的关系,输出false这样只表示一个字符。
System.out.println("abc".matches("(a|b|c){2}"));//(a|b|c)是或的关系,如果是2个字符也输出false
System.out.println("abc".matches("(a|b|c){3}"));//(a|b|c)是或的关系,现在是3个了字符,于是输出了true
}
}
这想你要这样子用的话是没有什么区别的!
不过用[]的好处是不一样的,它可以定个一个区间。
如:[a-z] ,[a-z|ABC] 你用|就没有这样的功能!
正则表达式开头:/^然后以$/结尾!
1、首先,建立一个regexTest.php页面,里面有三个文本框,一个是放的原始文本,一个放的是正则表达式,另一个放的就是匹配出来的结果,如图。
2、其中,regexTest.php的表单代码如下。
3、regexTest.php中的js代码如下。
4、控制器里的核心代码如下。
5、最后测试结果如下,就完成了。

java 正则表达式 (- .) 什么意思

你这个不完整吧。
-
匹配
减号
|
通常和圆括号连用表示或的意思,单独匹配这个符号,一般会用转义符
\|
\.
匹配圆点,
如果不加转义符\,就不止匹配圆点了,还会匹配很多内容。
写法有错误,'-'也是特殊字符,需要转义,所以应该是[\\-|\\.]。
觉得本意应该是匹配
['-'或者'.']这两个字符。
匹配的-或者.
字符串按-或者.分割
()表示里边的内容是一个分组
|表示或者
\\ 由于字符串中的\要转意,所以\\表示\
\.表示转意为 .
以 - 或 . 来拆分字符串
比如在main函数中
String split ="ak-fs.33-12.k4-ff.kk";
String [] arr = split.split("(-|\\.)");
for(int i =0;i
<arr.length;i++){
System.out.println(arr[i]);

}

结果为:

ak

fs

33

12

k4

ff

kk

可以自己试试

如一楼说的

按字符“-”或者字符“.”来切割一个字符串

得到一个字符数组

^

匹配一行的开头

$匹配一行的结束

\是转义符,用于消除其后紧跟的"的特殊含义,这里就表示

"

这个字符。

.

匹配任意一个字符

*

表示匹配0个或多个前面这个字符

所以,意思就是,匹配#开头或者"#开头的的行。
</arr.length;i++){

正则表达式中至少有一个或者多个用什么符号表示3

用问号表示 ?
用法 \d? 表示一个数字或者多个数字组成的字符串
正则表达式中至少有一个或者多个用什么符号表示3??
下面总结下什么是正则表达式以及其常用个符号和字符。
什么是正则表达式?
正则表达式(Regular Expression):是由一些字符和特殊符号组成的字符串,可以描述模式的重复或者表述多个字符。正则表达式的用途是为高级的文本模式匹配、抽取、或文本形式的搜索和替换提供基础。
正则表达式中常用个特殊符号和字符有哪些?
特殊符号 描述 示例 示例意义
| 管道符号,表示选择其中一个进行匹配 re1| re2 选择匹配正则表达式re1或者re2
. 匹配除去\n之外的任意字符 d.d 表示匹配d与d之间为任意字符的情况,如“did”“d2d”等
^ 匹配字符串起始部分 ^my 表示任何以my作为开始的字符串
$ 匹配字符串终止符 bye$ 表示匹配任何以bye结束的字符串
* 匹配0或者多次左端出现的正则表达式 [0-9]* 表示匹配以任意个数字开始的字符串
+ 匹配1次或者多次左端出现的正则表达式 [0-9]+ 表示匹配以1个或者多个数字开始的字符串
? 匹配0次或者1次左端出现的正则表达式 [0-9]? 表示匹配以0个或者1个数字开始的字符串
{N} 匹配N次左端出现的正则表达式 [0-9]{N} 匹表示配以N个数字开始的字符串
{M,N} 匹配M次到N次左端出现的正则表达式 [0-9]{M,N} 匹表示配以M个到N个数字开始的字符串
[...] 匹配来自括号中字符集的任意一个 [abcd] 表示匹配a或者b或者c或者d
[.-.] 匹配从.到.之间的任意一个字符 [a-g] 表示匹配a到g之间的任意一个字符,如a或b...
[^...] 不匹配此字符集中的任何一个字符 [^abc] 表示匹配不是字符a或b或c的任意字符
() 对正则表达式进行分组或者匹配子组 ([0-9]{3})? 表示匹配三个数字出现一次或者不出现的情况
特殊字符 描述 示例 示例意义
\d (\D) \d匹配任何一个十进制数字,\D不匹配任何数字 \d\d\d 匹配三个数字的字符串
\w (\W) \w匹配任何一个字母字符,\W不匹配任何字母字符 \w+ 匹配一个由字母字符组成的字符串
\s (\S) \s匹配任何空格字符,\S不匹配任何空格字符 of\sthe 匹配of和the之间有任何空格字符的情况
\b(\B) \b匹配任何单词边界,\B不匹配任何单词边界 \bthe 任何以the开始的字符串
\N 匹配已保存的子组N price:\N 匹配price:后面加已保存的子组N的形式
\c 仅按照c的字面意思进行匹配 \* 匹配字符*
\A(\Z) \A匹配字符串的开始,\Z匹配字符串的结尾 \Acar 匹配以car开始的字符串
我们发现在特殊字符中大写往往表示与小写意义相反,可以用来帮助记忆。

正则表达式中的 .? 或 .+ 是什么意思?

后边多一个?表示懒惰模式。
必须跟在*或者+后边用
如:
如果用正则匹配src中内容非懒惰模式匹配
src=".*"
匹配结果是:src="test.jpg" width="60px" height="80px"
意思是从="往后匹配,直到最后一个"匹配结束
懒惰模式正则:
src=".*?"
结果:src="test.jpg"
因为匹配到第一个"就结束了一次匹配。不会继续向后匹配。因为他懒惰嘛。
.表示除\n之外的任意字符
*表示匹配0-无穷
+表示匹配1-无穷
表达式 .* 就是单个字符匹配任意次,即贪婪匹配。 表达式 .*? 是满足条件的情况只匹配一次,即最小匹配.
举例介绍:
如:
懒惰模式正则:
src=".*?"
结果:src="test.jpg"
扩展资料
正则表达式特殊字符及其含义:
1、\cx
匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。
2、\f
匹配一个换页符。等价于 \x0c 和 \cL。
3、\n
匹配一个换行符。等价于 \x0a 和 \cJ。
4、\r
匹配一个回车符。等价于 \x0d 和 \cM。
5、\s
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
6、\S
匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
7、\t
匹配一个制表符。等价于 \x09 和 \cI。
8、\v
匹配一个垂直制表符。等价于 \x0b 和 \cK。
参考资料:
百度百科——正则表达式
.*? 是懒惰匹配,一旦匹配到第一个就不往下走了。(至于什么叫懒惰匹配 自己去百度。)
.*+是无限匹配直到最后一个。
.表示任意字符
*:修饰前面的字符,0到多
+:修饰前面的字符,1到多
.匹配任意字符1个
*表示匹配重复上一个字符0到无限次
?表示匹配前一个字符0次或一次,跟在*表示非贪婪模式
默认是贪婪模式比如
<.*>会把所有字符吞下满足前面是

阅读更多 >>>  js正则表达式特殊字符,js 正则表达式 -是什么意思

就返回字符串

<.*?>一次吃一个字符满足条件返回字符串

一、*表示匹配前面的字符0个或多个

二、+表示前面的字符1个或多个

三、?表示放在其他字符后面表示前面的字符可以有,也可以没有,或者放在*、+后面表示匹配尽可能少的字符

例如:字符串fooooo,正则fo*和fo+会匹配整个字符串,

fo+? 匹配fo,

fo*? 匹配f

四、*+没有这样的用法,除非是匹配星号本身,即: \*+ 表示一个或多个星号

扩展资料:

正则表达式符号

\:

将下一个字符标记符、或一个向后引用、或一个八进制转义符。例如,“\\n”匹配\n。“\n”匹配换行符。序列“\\”匹配“\”而“\(”则匹配“(”。即相当于多种编程语言中都有的“转义字符”的概念。

^:

匹配输入字行首。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。

$:

匹配输入行尾。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。

参考资料来源:百度百科-正则表达式

正则表达式如何表达有或没有,但最好是有

(正则表达式)?
在正则表达式一个整体单元后加上?号,就可以表示有或没有。
?是贪婪匹配,所以如果有的话肯定匹配,符合最好是有的意思

网站数据信息

"正则表达式或者怎么表示,正则表达式中的或怎么表示"浏览人数已经达到21次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:正则表达式或者怎么表示,正则表达式中的或怎么表示的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!