我正在努力使用REGEX并将其用于程序。
输入只需要字母数字键,并且(只允许使用逗号,:,空格,/, - 在特殊字符中)
我试过=(^ [a-zA-Z0-9,:\ S / - ] * $) 据我所知,如果我错了,请纠正我。 a-zA-Z0-9 - 字母数字键。 ,: - 逗号和冒号 \ S - 空间 / - 我不确定如何表示正斜杠因此我逃脱了它 - - Dash也不确定是否需要逃脱它。
如果可以纠正这一点并且对每个部分进行解释,将不胜感激。
提前致谢。
答案 0 :(得分:5)
您可以使用a-zA-Z0-9
替换\\w
,[a-zA-Z_0-9]
是\\S
的缩写。此外,\\s
是任何字符,但不是空格,您应该使用/
。您不需要转义-
,甚至^([\w,:\s/-]*)$
如果它是第一个或最后一个,因为如果它位于两个字符之间,它可以被解释为范围,您将不得不逃脱它。因此,您可以使用 import java.util.*;
public class Main
{
public static void main(String[] args)
{
String m="java is great";
String temp="";
System.out.println(m);
String store="";
int cnt=0;
char [] p=m.toCharArray();
for(int i=p.length-1;i>=0;i--)
{
if(p[i]==' '||i==0)
{
if(cnt>=1||i==0)
{
if(i==0)
temp=temp+p[i];
store=store+new StringBuilder(temp).reverse().toString();
temp="";
cnt=0;
}
if(p[i]==' ')
{
store=store+p[i];
}
}
else
{
temp=temp+p[i];
System.out.println(p[i]);
cnt++;
}
}
System.out.println(store);
}
}
答案 1 :(得分:3)
\S
速记与除空格之外的任何字符匹配,恰好与您想要的相反。小写\s
匹配空格[\t\v\n\r\f ]
。但是如果你只想要空格,只需在角色类中添加一个空格。-
需要在字符内转义,除非它是字符类中的第一个或最后一个字符,但你总是可以逃避它,只是为了确定。/
不需要转义。它们以其他语言转义,您将它们用作模式分隔符。即:/regex/i
。\\
和右括号\]
。<强>正则表达式强>
pattern = "^[a-zA-Z0-9 ,:/\\-]*$"
答案 2 :(得分:1)
将行首^
和行尾$
移到群组外 - 例如
^([a-zA-Z0-9,:\S/-]*)$
应该这样做。