JAVA 正则,java

  JAVA 正则,java

  如何解决写爬虫IP受阻的问题?立即使用。

  表达的意思:(推荐:java视频教程)

  1.特性

  字符代表字符a.

  \ \反斜杠字符。写的时候写为\ \ \ \。(注意:由于java在第一次解析时将\ \ \解析为正则表达式\ \然后在第二次解析时解析为\ \所以1.1中没有列出的所有转义符,包括1.1中的\ \但带\的都要写两遍)

  \0n八进制值为0的字符n(0 \ 0nn八进制值为0的字符nn(0 \ 0八进制值为0的字符mnn(0 \ xhh十六进制值为0x的字符hh)

  \ uhhhhhhh字符hhhh十六进制值0x

  \ tbag (\u0009 )

  \n新行(换行)字符( \u000A )

  \r回车( \u000D )

  \f分页符( \u000C )

  \一个铃铛( \u0007 )

  \e转义字符( \u001B )

  \cx对应于x的控制字符。

  2.字符类

  【ABC】a、B或C(简单类)。例如,[egd]意味着它包含字符E、G或d。

  [ABC]除A、B或C(负数)以外的任何字符。例如,[EGD]表示不包括字符E、G或D。

  [a-zA-Z] a到Z或A到Z,包括两个字母(范围)

  [a-d[m-p]] a到D或M到P: [A-DM-P](联合)

  [a-z[def]] d,E或F(交集)

  [A-Z [BC]] A到Z,除了B和C: [AD-Z](减号)

  [A-Z [M-P]] A到Z而不是M到P: [A-LQ-Z](减号)

  3.预定义的字符类(注意反斜杠应该写两次,例如,\d写为\\d)任何字符(可能匹配也可能不匹配行终止符)

  \d个数字:[0-9]

  \D非数字:[0-9]

  \s空白字符:[\t\n\x0B\f\r]

  \S非空白字符:[\ s]

  \w单词字符:[a-zA-Z_0-9]

  \W非单词字符:[\ w]

  4.POSIX字符类(仅限US-ASCII)(注意反斜杠应该写两次,例如,\p{Lower}写成\\p{Lower})

  \p{Lower}小写字母字符:[a-z]。

  \ p {大写字符:[A-Z]

  \p{ASCII}所有ASCII: [\ x00-\ x7f]

  \p{Alpha}字母字符:[\p{Lower}\p{Upper}]

  \p{Digit}十进制数字:[0-9]

  \p{Alnum}字母数字字符:[\p{Alpha}\p{Digit}]

  \ p {punch}标点符号:#$%()* ,-./:@[\]^_`{}~

  \p{Graph}可见字符:[\ p {alnum} \ p {punch}]

  \p{Print}可打印字符:[\p{Graph}\x20]

  \p{Blank}空格或制表符:[\t]

  \p{Cntrl}控制字符:[\x00-\x1F\x7F]

  \ p { xdighter }十六进制数:[0-9a-fA-F]

  \p{Space}空白字符:[\t\n\x0B\f\r]

  5.java.lang.Character类(简单的java字符类型)

  \p{javaLowerCase}相当于Java . lang . character . islowercase()

  \p{javaUpperCase}等效于Java . lang . character . I supper case()

  \p{javaWhitespace}相当于Java . lang . character . iswhitespace()

  \p{javaMirrored}相当于java.lang.Character.isMirrored()

  6.六人一班。Unicode块和类别

  \ p {在希腊文中}希腊文块(简单块)中的字符

  大写字母(简单类别)

  \p{Sc}货币符号

  \P{InGreek}除了希腊文块中的字符以外的所有字符(负数)

  [\ p {l} [\ p {lu}]除大写字母(减号)以外的所有字母

  7.边界匹配器

  在行首,请在正则表达式的开头使用。例如:(abc)表示以ABC开头的字符串。编译时注意设置参数MULTILINE,比如pattern p=pattern.pile (regex,pattern . MULTILINE);

  $行的末尾,请在正则表达式的末尾使用它。比如:(bca)。* (abc $)表示以BCA开始、以abc结束的行。

  \b单词边界。例如,\b(abc)表示单词的开头或结尾包含abc,(abcjj和jjabc都可以匹配)

  \B非单词边界。例如,\B(abc)表示单词中间包含abc,(jjabcjj匹配但jjabcj和abcjj不匹配)

  \输入的开始

  \G最后一场比赛结束(个人感觉这个参数没用)。例如,\\Gdog的意思是在最后一场比赛结束时寻找dog。如果没有狗,就从头开始找。注意,如果开头不是狗,就无法匹配。

  \Z输入的结尾,仅用于最后一个终止符(如果有)

  行结束符是一个或两个字符的序列,标记输入字符序列的行结束。

  以下代码被视为行终止符:

  ‐新行(换行)字符( \n ),

  ‐回车符( \r\n ),后跟一个换行符,

  ‐单独回车( \r ),

  ‐下一行字符( \u0085 ),

  ‐行分隔符( \u2028 )或

  ‐段落分隔符( \u2029)。

  \ z输入结束

  编译模式时,可以设置一个或多个标志,例如

  模式Pattern=Pattern . compile(Pattern string,Pattern。不区分大小写模式。UNICODE _ CASE);

  支持以下六种标志:

  ‐不区分大小写:匹配字符时与大小写无关。默认情况下,该标志只考虑美国ASCII字符。

  ‐UNICODE_CASE:与不区分大小写结合使用时,使用UNICODE字母匹配。

  ‐ Multiline: and $匹配一行的开始和结束,而不是整个输入。

  ‐UNIX_LINES:在多行模式下匹配and $时,只有 \n 被视为行终止符。

  ‐DOTALL:当使用此标志时。符号匹配所有字符,包括行结束符。

  ‐CANON_EQ:考虑Unicode字符的规范等价

  8、贪婪量词

  x?x,一次或者根本没有。

  X* X,零次或多次

  x,一次或多次

  X{n} X,正好n次。

  X{n,} X至少n次

  X{n,m} X,至少n次,但不超过m次。

  9.相关量词

  x?x,一次或者根本没有。

  X*?x,零或多次

  x?x,一次或多次

  X{n}?x,正好n次

  X{n,}?x,至少n次

  X{n,m}?x,至少n次,但不超过m次

  10.所有格量词

  x?x,一次或者根本没有。

  X* X,零次或多次

  x,一次或多次

  X{n} X,正好n次。

  X{n,} X至少n次

  X{n,m} X,至少n次,但不超过m次。

  贪婪、不情愿和占有欲的区别在于:(注意,它只限于模糊处理,如。)

  灰色量词被认为是“贪婪的”,因为它第一次读取整个模糊匹配字符串。如果第一次匹配尝试(整个输入字符串)失败,匹配器将在匹配字符串的最后一位后退一个字符,然后重试,重复这个过程,直到找到匹配项或没有剩余的字符需要后退。根据表达式中使用的量词,它最后尝试匹配的是1或0个字符。

  然而,勉强量词采取相反的方法:它们从匹配字符串的开头开始,然后逐渐一次读取一个字符来搜索匹配。他们最后尝试匹配的是整个输入字符串。

  最后,所有格量词总是读取整个输入字符串,并尝试匹配一次(且仅一次)。与贪婪的量词不同,所有格从不后退。

  1.逻辑算子

  Xy后跟y

  XY X或Y

  (X) X,作为捕获组。比如,(abc)就是把abc作为一个整体来抓。

  12.反向引用

  \n任何匹配的第n个捕获组

  捕获组可以通过从左到右计算它们的左括号来编号。例如,在表达式((A)(B(C))中,有四个这样的组:

  1 ((A)(B(C)))

  2 \A

  第3条(B)款(C)项

  第4条(C)

  可以通过表达式中的\n来引用对应的基团,例如,(ab)34\1表示ab34ab,(ab)34(cd)\1\2表示ab34cdabcd。

  13.引用

  \没有,但是下列字符被引用

  \Q什么都不做,但是所有字符都被引用,直到\ e. The之间的字符串将被完整使用(除了1.1中的转义字符)。例如,AB \ \ Q {} \ \ \ E

  可以匹配ab{}\\

  \E什么也不做,但从\ q结束引用。

  14.特殊结构(非捕获)

  (?X) X,作为非捕获组。

  (?Idmsux-idmsux)什么都没有,但是匹配标志从on改为off。比如:表情(?i)abc(?-i)def此时,(?I)打开不区分大小写开关,abc匹配。

  Idmsux解释如下:

  ‐ I不区分大小写:US-ASCII字符集不区分大小写。(?我)

  ‐d UNIX_LINES:打开UNIX换行符。

  ‐m多线:多线模式(?m)

  UNIX向下转换行为\n

  WINDOWS下载行为\r\n(?s)

  ‐u UNICODE_CASE: Unicode不区分大小写。(?u)

  ‐x注释:您可以在模式中使用注释,忽略模式中的空格,并一直使用 # (后面跟注释)。(?x)比如(?X)abc#asfsdadsa可以匹配字符串abc。

  (?Idmsux-idmsux:X) X) x,作为具有给定标志on-off的非捕获组。与上面类似,上面的表达式可以改写为:(?I:abc)def,或者(?i)abc(?-i:def)

  (?=X) X,通过零宽度的正向前瞻。首先断言零的宽度,只有当子表达式x在这个位置的右侧匹配时,匹配才会继续。比如\w(?=\d)表示字母后跟数字,但不捕获数字(无回溯)

  (?X) X,通过零宽度的负前视。零宽度负先行断言。只有子表达式x在这个位置的右边不匹配,匹配才会继续。比如\w(?\d)表示字母后面没有数字,数字不会被捕获。

  (?(?(?X) X,作为独立的非捕获组(无回溯)

  (?=X)和(?x)的区别在于(?x)它不具有追溯效力。例如,匹配的字符串是abcm

  当表达式是一个(?bbc)m可以匹配,当表达式为a(?Bbc),因为当后者匹配B时,由于已经匹配,跳出非捕获组,不再匹配组内字符。它可以加快速度。

  更多java知识,请关注java基础课程专栏。以上是java常规知识的详细内容,更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: