求一正则表达式

write2me 2012-04-06 12:37:48
小弟对正则表达式不是很熟悉,比较着急,像
“A@@B@@C@@D##A1@@B1@@C1@@D1##......”这个形式的字符串的正则表达式应该怎么写?
...全文
122 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
write2me 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

看看正则表达式的书或者文档吧。
[/Quote]
高手,在吗?我看书了,可是还有问题,能指点一下吗?
在XSD验证XML时,我的数据是“001##XX制药厂#国营企业##024-65XXXX23##新区出口加工区XXX##胶囊@@002##XX化肥##民营企业##024-35XXXX23##新区##二氧化硫@@003##XX食品##民营企业##024-66XXXX23##新区水家##食品安全”,大概意思就是从数据库中读出的字段用“##”分隔,行之间用“@@”分隔,由于数据数目不确定,所以我的正则表达式是“(.+#{2}.+(@{2})?)+”并且用其他工具测试能通过,我不明白为什么xsd的校验通不过呢?
write2me 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
引用 9 楼 的回复:
哦,我的字符串中不是A,B,C,D而是可能任意的字符串,任意在正则表达式中应该怎么表示啊?

.点号表示任意字符
就是任意字符,然后2个@,这样的字符串多个组合,对吧,那就更简单了
String s = "A@@B@@C@@D##A1@@B1@@C1@@D1##";
System.out.println(s.matches("(.+?(@{2})?)+"));……
[/Quote]
那天受到你的启发之后回去写了一个正则表达式,用在XSD验证XML时,我的数据是“001##XX制药厂#国营企业##024-65XXXX23##新区出口加工区XXX##胶囊@@002##XX化肥##民营企业##024-35XXXX23##新区##二氧化硫@@003##XX食品##民营企业##024-66XXXX23##新区水家##食品安全”,大概意思就是从数据库中读出的字段用“##”分隔,行之间用“@@”分隔,由于数据数目不确定,所以我的正则表达式是“(.+#{2}.+(@{2})?)+”并且用其他工具测试能通过,我不明白为什么xsd的校验通不过呢?
能够继续指导一下?
write2me 2012-04-06
  • 打赏
  • 举报
回复
我X,这个不能写吧,因为被@@分割的数据类型多种多样,犯浑了
write2me 2012-04-06
  • 打赏
  • 举报
回复
最好给我这个正则表达式的白痴讲解一下哈,谢谢啦
噢噢噢噢 2012-04-06
  • 打赏
  • 举报
回复
split("@@")
安特矮油 2012-04-06
  • 打赏
  • 举报
回复
看看正则表达式的书或者文档吧。
qybao 2012-04-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
哦,我的字符串中不是A,B,C,D而是可能任意的字符串,任意在正则表达式中应该怎么表示啊?
[/Quote]
.点号表示任意字符
就是任意字符,然后2个@,这样的字符串多个组合,对吧,那就更简单了
String s = "A@@B@@C@@D##A1@@B1@@C1@@D1##";
System.out.println(s.matches("(.+?(@{2})?)+"));

youyudenanhai 2012-04-06
  • 打赏
  • 举报
回复
上面兄弟给的很详细
write2me 2012-04-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

for example
String s = "A@@B@@C@@D##A1@@B1@@C1@@D1##";
System.out.println(s.matches("([A-Z\\d#]+(@{2})?)+"));

"([A-Z\\d#]+(@{2})?)+"
大写字母或数字或#,然后接着2个@(这2个@可有可无)所组成的字符串,这样组成字符可有多个
[A-Z]表示大写字符
……
[/Quote]
哦,我的字符串中不是A,B,C,D而是可能任意的字符串,任意在正则表达式中应该怎么表示啊?
write2me 2012-04-06
  • 打赏
  • 举报
回复
呵呵,就当是学习怎么写正则表达式了,我写的那个串中A、B、C等只是一个代号而已,实际上真正应用到可能是各种不同的数据库中的字段值,这样的话怎么会知道该如何写正则表达式呢!
安特矮油 2012-04-06
  • 打赏
  • 举报
回复
是否全是A@@B@@C@@D##类似于这样的一节一节拼成的,如果是的话可以用

public static void main(String[] args) {
String s = "A@@B@@C@@D##A@@B@@C@@D##";
System.out.println(s.matches("(\\w+@{2}\\w+@{2}\\w+@{2}\\w+#{2})+"));
}
qybao 2012-04-06
  • 打赏
  • 举报
回复
for example
String s = "A@@B@@C@@D##A1@@B1@@C1@@D1##";
System.out.println(s.matches("([A-Z\\d#]+(@{2})?)+"));

"([A-Z\\d#]+(@{2})?)+"
大写字母或数字或#,然后接着2个@(这2个@可有可无)所组成的字符串,这样组成字符可有多个
[A-Z]表示大写字符
\\d表示数字,也可以用[0-9]代替
[#]就是#字符
@就是字符
{2}表示出现2次
?表示可有可无
+表示出现1次或多次
()表示一个组
lh446 2012-04-06
  • 打赏
  • 举报
回复
^([a-zA-Z0-9]+[@]{2}[a-zA-Z0-9]+[@]{2}[a-zA-Z0-9]+[@]{2}[a-zA-Z0-9]+[##]{2})+$
write2me 2012-04-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

split("@@")
[/Quote]
我想去验证所传的字符串是否属于这种格式,你说的split是获取串中的数据

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧