2015-02-23 80 views
-5

我是新来编写正则表达式的。我做了一点点研究,并与此正则表达式的字符串上来:请检查这个正则表达式

7.0 GB的高速数据加上无限制的^通话&文本(69.00)

难道我任何接近的正确吗?

^(\\d{1}\\.\\d{1} \\s [G.t] \\s (\\d{2}\\.\\d{2})$ 
+0

你测试过了吗?你看到了什么结果?你使用哪种语言的正则表达式? – skrrgwasme 2015-02-23 22:25:48

+0

我没测试过,我该如何测试它? Java – 2015-02-23 22:29:34

+0

此网站对于快速测试非常有用:https://www.regex101.com/。至于你的正则表达式,它甚至不是有效的。你有更多(''而不是''''')。 – 2015-02-23 22:32:33

回答

0

这取决于语言(有轻微的变化)。 正则表达式(正则表达式)用于查找字符串中的匹配项。 第一部分是关闭的,但{1}是必要的,不需要分组(使用括号)。
"^(\d{1}\.\d{1}..." --> "^\d\.\d..."(你也可以使用[0-9]代替\d
中间部分可以由相当简单,只需.+
最后一节稍微偏离。对齐用于分组,所以要匹配它们,你必须使用escape char()
"...(\d{2}\.\d{2})" --> "...\(\d{2}\.\d{2}\)$"
正则表达式可能会让人困惑,但在使用它时会带来很多乐趣。为了练习,我尝试着想出几个正则表达式,它们可以与电子邮件中的一些随机文档或文档名称或网站上的产品名称相匹配。 保持练习。他是一个很好的参考(从一个小谷歌搜索发现)http://www.zytrax.com/tech/web/regex.htm

^\d\.\d.+\(\d{2}\.\d{2}\)$

让我知道如果您有任何问题 - 享受。

+0

我用\ d代替[0- 9]。但是,谢谢你的推荐,这真的很好。 – 2015-02-23 22:58:26

1

要逐字匹配字符串可以使用:

^7\.0 GB of High-Speed Data Plus Unlimited\^ Talk & Text \(69\.00\)$ 

现在你可以替换\ d {X}每一个数字,其中x是数字相匹配的号码。

^\d{1}\.\d{1} GB of High-Speed Data Plus Unlimited\^ Talk & Text \(\d{2}\.\d{2}\)$ 

现在你可以用\ d

^\d\.\d GB of High-Speed Data Plus Unlimited\^ Talk & Text \(\d{2}\.\d{2}\)$ 

现在,您可以取代一些文本替换为\ d {1}。*并GB之间的文本(

^\d\.\d GB.*\(\d{2}\.\d{2}\)$ 

匹配现在,您可以GB后添加\ S以便GB

^\d\.\d GB\s.*\(\d{2}\.\d{2}\)$ 
后必须有至少一个空格字符
+0

真棒...谢谢... :) – 2015-02-23 23:42:48

+0

我认为这是我见过的正则表达式问题的最佳答案。人们很少解释如何构建正则表达式,他们只是提供它。做得好。 – skrrgwasme 2015-02-24 04:34:28