Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式中的元字符_Java_Regex_String_Parsing_Text - Fatal编程技术网

Java 正则表达式中的元字符

Java 正则表达式中的元字符,java,regex,string,parsing,text,Java,Regex,String,Parsing,Text,全部 如果我想从.txt文件中读取一个字符,并将搜索边界(仅针对一个char.space)设置为读取“数字2到9或除e以外的小写字符”,以下两个正则表达式之一是否正确 I. "[/w[2-9][a-z&&[^e]]]" 对 II. "[[2-9][a-z&&[^e]]]" 我倾向于使用第二种方法,但在java.util.regex.Pattern描述中找不到任何说明如何在同一位置同时搜索数字和字符的方法。任何帮助都会很好。谢谢大家!^^ 你会写: [2-9

全部

如果我想从.txt文件中读取一个字符,并将搜索边界(仅针对一个char.space)设置为读取“数字2到9或除e以外的小写字符”,以下两个正则表达式之一是否正确

I. "[/w[2-9][a-z&&[^e]]]"  

II. "[[2-9][a-z&&[^e]]]"
我倾向于使用第二种方法,但在java.util.regex.Pattern描述中找不到任何说明如何在同一位置同时搜索数字和字符的方法。任何帮助都会很好。谢谢大家!^^

你会写:

[2-9a-df-z]
(?!e)[2-9a-z]
如果您确实想使用显式的“not
e
”来编写
a-z
,您可以编写:

[2-9a-df-z]
(?!e)[2-9a-z]

但我认为这样做太过分了。

试试
[2-9a-df-z]
。这将匹配一个从
2
9
的数字,以及除
e
以外的所有小写字符,即从
a
d
,从
f
z
您的第二个正则表达式是正确的,但不需要所有这些括号。这将有助于:

"[2-9a-z&&[^e]]"
这将比@ruakh的建议更有效,
(?!e)[2-9a-z]
,后者必须在每个位置执行两次测试。这正是Java开发人员试图用交集操作符
&&
解决的问题。此后,Unicode联盟与其他合作伙伴一起支持了这一想法

我不知道你想用第一个正则表达式做什么,但是
/
w
都将被视为文字字符,使其等同于
[2-9a-df-z/]
,这听起来不像你想要的



编辑:请不要误解我的意思,效率并不是选择这种方法的唯一原因。这甚至不是最重要的。在正则表达式中和其他任何地方一样邪恶。集中精力使正则表达式尽可能简单明了,不必担心性能问题。我的正则表达式比前向版本更简单(因为它只执行一种操作)也更清晰(可读性更强)(但不是很多;
&&
语法在我看来仍然很糟糕)。

太好了,谢谢你的提示!在你提到它之前,我甚至没有考虑过效率……干杯!^ ^很好的观点,谢谢你的链接;信息量大,有帮助!