700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Java 使用正则表达式匹配淘口令

Java 使用正则表达式匹配淘口令

时间:2023-03-22 19:49:54

相关推荐

Java 使用正则表达式匹配淘口令

前言

项目中被正则表达式的反斜线问题坑了几次了,今天恰好用到正则表达式的匹配,又遇到饭斜线的处理,记录一下。先对比其他语言和 Java 语言中反斜线,最后再给出淘口令匹配的案例。

正则表达式语法

反斜线

在其他语言中,\\ 表示要在正则表达式中插入一个普通的(字面上的)反斜杠,不要给它任何特殊的意义。

在 Java 中,\\ 表示要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。

所以,在其他的语言中(如Perl),一个反斜杠 \ 就足以具有转义的作用,而在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。

也可以简单的理解在 Java 的正则表达式中,两个 \\ 代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是 \\d,而表示一个普通的反斜杠是 \\\\。

基础语法

正则表达式的基本语法可以参考下面表格,正则匹配规则基本都是按照下面表格中的字符来组合而成的。

Java 匹配字符串中的淘口令

淘口令示例,

¥G8iZYgqcoHf¥

$2EiVYhmJlSc$

₳SftOYhmrepl₳

¢SftOYhmrepl¢

基于大量淘口令数据分析,淘口令的规则为,以单个货币字符开始,同样的货币字符结尾,货币字符中间是 8~12 个随机字符组成的字符串。

由此规则,在非 Java 语言中,正则表达式为 ([\p{Sc}])\w{8,12}([\p{Sc}]),其中 \p{Sc} 匹配一个货币字符,\w{8,12} 匹配长度为8~12的字符串。

\p{xx}:a character with the xx property - 表示一个拥有 xx 属性的字符

Sc:Currency symbol - 货币字符属性

由于在 Java 中 \\ 表示正则表达式的反斜线,所以在 Java 语言中的正则表达式为:([\\p{Sc}])\\w{8,12}([\\p{Sc}]),根据此正则表达式,Java 示例如下,

static void test() {String pattern = "([\\p{Sc}])\\w{8,12}([\\p{Sc}])";String content = "复制这条信息,¥9tTGYhp336x¥,到【手机淘宝】即可查看";String content2 = "【两件套洋气减龄裤装新款夏时尚港味高冷御姐套装女轻熟风气质】," + "椱ァ製这段描述¢SftOYhmrepl¢后到?◇綯℡寳?";Pattern r = pile(pattern);Matcher m = r.matcher(content);if (m.find()) {System.out.println("match: " + m.group());}m = r.matcher(content2);if (m.find()) {System.out.println("match: " + m.group());}System.out.println("End");}

输出结果,

match: ¥9tTGYhp336x¥

match: ¢SftOYhmrepl¢

End

从输出结果可知,已经匹配成功。

货币字符列表

附上各种货币字符列表,

Currency signs

؋‎ – afghani฿ – baht₿ – bitcoin¢ – cent₡ – colón₵ – cedi$ – dollar sign₫ – dong֏ - dram€ – euroƒ – florin, guilder, or gulden₲ – guarani₾ – lari₴ – hryvnia₭ – kip₺ – Turkish lira₼ – manat₥ – mill₦ – naira₱ – Philippine peso£ – pound﷼‎ – rial or riyal៛ – rielރ – rufiyaa₽ – ruble₨ – rupee௹ – rupee₹ – Indian rupee৲ or ৳ – taka૱ – rupee (in Gujarat)₪ – new shekel₸ – tenge₮ – tugrik₩ – won¥ – yen or yuan Formerly used currency signs₳ – austral₠ – ECU (European Currency Unit)₢ – cruzeiro₯ – drachma₣ – French franc₤ – Italian lira₶ – livre tournoisℳ – mark₧ – peseta₰ – pfennig₷ – spesmilo

总结

Java 中正则表达式两个反斜线 \\和其他语言正则表达式一个反斜线 \ 代表的含义一样,所以 Java 中正则表达式有反斜线时要特别注意。淘口令匹配规则是在两个货币符号中间添加8~12个字符,所以对应的正则表达式中需要通过 \p{Sc} 来匹配货币字符。

参考链接:

/wiki/%E2%82%B4

/man/3/pcresyntax/

/java/java-regular-expressions.html

欢迎关注我的公众号,一起进步!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。