我必须实现一个检查字符串是否符合正则表达式的函数,我编写了一个解析文件名列表的方法,我需要检查每个文件名是否尊重正则表达式。
文件名的组成如下(仅作为示例):
verbale.pdf.001.001
image.jpg.002.001
字符串始终由:
组成扩展程序(仅限jpg或pdf)“。”一组三个数字“。”< strong>一组三个数字
有了这个正则表达式,我需要检查输入端的字符串是否如上所述,我目前已经实现了这个:
Pattern rexExp = Pattern.compile("((\\.jpg)|(\\.pdf))\\.[0-9]{3}\\.[0-9]{3}");
但是不能正常工作,实现一个regExp以检查文件名是否以某个路径结束是个好主意吗?
答案 0 :(得分:2)
比其他答案少贪心,认为它适合你:
\\w+\\.(jpg|pdf)(\\.\\d{3}){2}
答案 1 :(得分:1)
这应该有效:
[
{
"conversion_month": "2017-08",
"children": [
{
"channel": "DISPLAY",
"children": [
{
"sub_channel": "Retargeting",
"children": [
{
"campaign": "Summer_Campaign",
"children": [
{
"Id": "200278217",
"children": [
{
"cost": "2.286261"
},
。* =任何字符(例如“verbale123”)
\\ w {3} =任意3个字母\数字字符
\\。 =一个点
\\ d {3} =任意三个数字字符
答案 2 :(得分:1)
要检查字符串是以pdf
还是jpg
结尾,还是两个.
和3位数序列,您可以使用
(?i)(?:jpg|pdf)(?:\.[0-9]{3}){2}$
请参阅regex demo
<强>详情
(?i)
- 不区分大小写的标记(?:jpg|pdf)
- jpg
或pdf
(?:\.[0-9]{3}){2}
- 重复.
和3位数$
- 字符串结束。与Matcher#find()
一起使用(因为matches()
锚定字符串开头和结尾的匹配,而使用此模式时需要部分匹配),example demo:
String s = "verbale.pdf.001.001";
Matcher matcher = Pattern.compile("(?i)(?:jpg|pdf)(?:\\.[0-9]{3}){2}$").matcher(s);
if (matcher.find()){
System.out.println("Valid!");
}