正则表达式"或"怎么写
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式"或"怎么写相关的知识,希望对你有一定的参考价值。
我想问下 有个地址 ad1 有时候是ad2 不能用\*d 那么正则要怎么判断 我是想 要么1 要么2 这个或的正则怎么写?
竖线“|”就是或的意思。意思是将两个匹配条件进行逻辑“或”(or)运算。
例如正则表达式(him|her) 匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them."。注意:这个元字符不是所有的软件都支持的。
而最简单的元字符是点,它能够匹配任何单个字符(注意不包括换行符)。
扩展资料:
求值运算:
进行逻辑表达式求值运算,不但要注意逻辑运算符本身的运算规则,而且还必须要遵循下面的两条原则:
1、对逻辑表达式从左到右进行求解。
2、短路原则:在逻辑表达式的求解过程中,任何时候只要逻辑表达式的值已经可以确定,则求解过程不再进行,求解结束。
具体理解逻辑表达式运算规则时可以先找到表达式中优先级最低的逻辑运算符,以这些运算符为准将整个逻辑表达式分为几个计算部分。
从最左边一个计算部分开始,按照算术运算、关系运算和逻辑运算的规则计算该部分的值。每计算完一个部分就与该部分右边紧靠着的逻辑运算符根据真值表进行逻辑值判断。
如果已经能够判断出整个逻辑表达式的值则停止其后的所有计算;只有当整个逻辑表达式的值还不能确定的情况下才进行下一个计算部分的计算。
参考资料来源:百度百科-正则表达式
参考技术A 正则中的或是用 '|' 来表示的你上面的要求 ab(1|2) 可以实现~
ad[12]也可以实现,不过用的是字符集的概念本回答被提问者和网友采纳 参考技术B 用切分就可以了,下面是python的例子
先需要替换一下:
import re
inputStr= "[location=width=290, top=10, left=78, height=28, words=一些文字,location=width=290, top=10, left=78, height=28, words=一些文字, location=width=290, top=10, left=78, height=28, words=一些文字, location=width=290, top=10, left=78, height=28, words=一些文字]"
inputStr = inputStr.replace(",",";")
resultList=re.split(r"[\[|;|\]]",inputStr)
print (resultList) 参考技术C ad[1|2]$
或者
ad[12]$
或者
(ad1|ad2)$
看你喜欢用哪个! 参考技术D [0-9A-Z][0-9A-Z]0,i\/[0-9A-Z]0,14-i[0-9A-Z]
不知道没有变量该怎么办啊,以前从来没有遇到过这种不定形式的规则(但是真的尽力了就作为一个参考的思路吧……当初被编译原理虐过所以万分同情楼主!
二楼的答案之所以【不可行】是由于“/"也参与了闭包,导致"/"零次或多次出现
QQA/2Q/23 如果输入也会是TRUE
“/”是否需要转义不清楚,默认当做需要转的考虑了
另,求这个软件的名称?很想知道~~多谢
java正则表达式的问题
System.out.println("1234".matches("123"));
这句话不是表示“123”可以出现在字符串的任何位置吗?怎么会匹配出false
另外我要表示一个字符串必要要以“1”开头,为什么不能这么写:
System.out.println("1234".matches("^1"));
而一定要这么写:
System.out.println("1234".matches("^1.*"));或者
System.out.println("1234".matches("1.*"));
那“^”这个符号还有什么用呢?
我知道^和$分别表示开头和结尾,可比如说我要表示一个以1开头,以9结尾的字符串,我可以这样表示:
System.out.println("12349".matches("^1.*9$"));
也可以把^和$去掉,这样表示:
System.out.println("12349".matches("1.*9"));
那我是不是可以说,^和$这两个符号是没有用并且可以省略的呢?因为我在引号里面已经明确地给出了字符串的完整的格式形式(而且也似乎必须给出,如果只想限定开头,例如System.out.println("1234".matches("^1"))的方式是错误的,一定要System.out.println("1234".matches("1.*"))),这样就不用特意声明哪边是开头,哪边是结尾
刚刚用一个正则表达式验证软件试了下,发现可以用^a来表示一个用a开头的字符串,可放到java语句里却不行,是不是java里面运行正则表达式有什么格式要求啊
后面的123应该是只能是123的意思
2)^是开头的意思,.是任意一个字符,*是重复任意多次,
所以"1.*" 表示1后面跟0个或任意多个字符,
^1表示只能是1
大家一起学吧:
正则表达式30分钟入门教程
http://deerchao.net/tutorials/regex/regex.htm 参考技术A System.out.println("1234".matches("123"));
你的这种匹配没办法匹配字符串里是否有“123”,他只会去判断“1234”与“123”是不是匹配,当然不是。要判断是否有,得用find()方法,这就得用专门的类了(java.util.regex),给你代码。
import java.util.regex.*;
public class Baidui
public static void main(String[] args)
Pattern p = null;
Matcher m = null;
String s = "1234";
p = Pattern.compile("123");
m = p.matcher(s);
System.out.println(m.find());
还有就^1.*9$ 和 1.*9 还是有区别的,但是对于你这种应用没区别
如果你想把字符串里符合表达式的内容找出来,就有点区别了。
^1.*9$ 表示整个字符串就是以1开头,9结尾
1.*9 表示整个字符串里包含1开头,9结尾的字串
你比如要从“sdad1434239dada”里找,第一种就找不出来,第二种就能找出
1434239来,差别真的挺小的,但是^&却是很重要的,建议去学一下java.util.regex这个类吧本回答被提问者采纳
以上是关于正则表达式"或"怎么写的主要内容,如果未能解决你的问题,请参考以下文章