QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 1916|回复: 0
打印 上一主题 下一主题

Python正则表达式(一看就懂)

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2022-9-7 15:37 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    Python正则表达式(一看就懂)7 g8 N/ {( Q4 M, r$ E  q
    2 J6 S. C1 v9 [8 T8 J3 J* `
    目录! \) \& t: s4 M& z' v) ]

    ( w, T5 A$ U" s0 F) }0 `' [- R哈喽O(∩_∩)O😄# e% v; n8 D3 z! B+ Z( n# s; A
    : Y- C9 d* f2 m* g
    什么是正则表达式(⊙_⊙)
    4 G& a8 y2 t. t) P% p
    " t% }3 T+ h$ @0 O8 O8 b简单说,正则表达式是…
    ' d5 f7 T6 p; T; Q4 S$ _: B" ]  b/ B, T& a4 p( A& ^6 x( \
    正则表达式怎么用❓
    1 H* }$ S, k8 w
    4 X" \1 u4 k' @sreach的用法🍊+ d4 J  f% b0 T" O  e  t7 h
    * B: A6 B! a; E; ]
    匹配连续的多个数值🍉
    / ]6 C' v" K4 i4 n# f* j! m$ T1 l, ?( J5 M+ D. K% y
    字符"+"重复前面一个匹配字符一次或者多次🍉
    ' L! `; Z, |" m" k* g; s, a1 {" F& s
    字符"*"重复前面一个匹配字符零次或者多次🍉
    2 L) ]) A) @( L8 t$ H" G0 O. w
    6 Q% p/ F+ w0 v3 A/ ^字符"?"重复前面一个匹配字符零次或者一次🍉- }( U. l. C, {% C7 n2 r

    $ L. [6 f+ N3 U1 R' ?6 n) T特殊字符使用反斜杠"“引导,例如”\r"、"\n"、"\t"、"\"分别表示回车、换行、制表符号与反斜线自己本身8 i  y  ]/ h- ^

    5 L. h, f6 b2 Q- v; ~# j) a  X) ?# F, H. S# z& @# M5 Y

    . R( [4 m8 i+ b0 N) g 完整表🔍
    4 P" C4 i' ?6 J9 ^, G
    * a! a$ L& r' F& H0 ?  d match用法🤔
    + I; Z- V" S6 f# [! Q& D( r7 E+ W8 f9 O
    match用法😃
    1 ]: w+ v8 U6 H' a' S1 R1 R9 k/ U# y0 k% E
    match对象🍊
    5 F+ a* @4 Z6 V  X, S7 c6 A9 X5 t
    数量词🍊: w' Y! D4 q: f- X& W! i0 a! h1 f8 \. `

    : p( Z: p7 i5 J8 B1 y. ?匹配开头、结尾🍊
    . O( ]& q4 \: B$ g6 {
    ' C* P  V/ P& O8 a6 f
    9 _: J" j  d4 M6 i& e9 q
    # Z( Z& G! f9 e 匹配分组🔍
    * W" N7 e( c0 x# h
    + E+ d; H) w& X. u; @match总结😄
    # e' X* t  ?5 K/ }1 S1 \$ J2 b$ ~$ h+ w; Y8 I' }5 o( ]' ^
    实践出真知 凸(`0′)凸 ☀️$ ~1 L3 k6 {! p' i) ~4 _" s

    6 g9 W$ {+ f3 c: g7 u% a: \8 W$ B写在最后🧐
    8 v9 K. n8 C& D& C6 ]
    ( \4 k; T' H" I, H哈喽O(∩_∩)O😄0 L5 Q( }* _- y! C4 l; k! r
    今天来发一下python正则表达式,其实这个也是比较简单的
    0 m& V7 |. ^0 D" b5 J! U7 K2 s; j+ ~" o, G* z
    肝了好几个小时才写出来呀* O( d: g6 m9 S3 I/ D2 G$ @6 U

    ' k, Z; T! `" i+ [$ m) ?6 G什么是正则表达式(⊙_⊙)
    , J4 v* [8 t' P! K# N, l目前越来越多的网站、编辑器、编程语言都已支持一种叫“正则表达式”的字符串查找“公式”,有过编程经验的同学都应该了解正则表达式(Regular Expression 简写regex)是什么东西,它是一种字符串匹配的模式(pattern),更像是一种逻辑公式。
    4 Y# U( f1 z" m3 T
    / S% R0 m- f' G: R0 Q# S5 q简单说,正则表达式是…
    0 Q9 Y; |3 g% j  t* {python中必备的工具,主要是用来查找和匹配字符串的。$ B6 U! g# D6 X9 Z4 t% j) X1 x$ G
    ( r% W; r' a9 [
    正则表达式尤其在python爬虫上用的多。& u  N: y4 }  K% d4 @

    , {1 q4 R6 _( S正则表达式怎么用❓
    * ~  d6 D. Z  F% g& a+ ^. ~$ I# r5 a首先,我们要导入头文件(写c++写习惯了)模块
    5 _- u  `# Z7 M  P2 ]/ n  {; J6 j, G8 F4 T9 T3 u$ H
    import re  r% i6 Z$ w, [3 H: q
    因为re是内置模块,所以不需要额外安装,就很银杏/ u* k+ h5 J& }' s

    ( o  S/ c& a# B& P* K9 Y9 bsreach的用法🍊2 v+ S& l* G" W3 G5 y/ ^
    匹配连续的多个数值🍉- d0 r: {/ C3 E8 e& f) D
    $ E" D0 @9 o7 ?$ O! U/ J1 p) z
    " |0 Q0 j5 ?6 u* _. _
    import re
    - j  s7 }8 Q2 I. K# o6 b8 N( z$ X& w1 b% U* S
    r=r"\d+"
    ) @, Y0 b  j" d+ ym=re.search(r,"YRYR567eruwgf")#目标是567% m( [& f! Z2 `0 c
    print(m)
    6 B+ A$ f- P2 y, c/ g: k7 E& p' c
    re模块中,r“\d+”正则表达式表示匹配连续的多个数值,search是re中的函数,从"YRYR567eruwgf"字符串中搜索连续的数值,得到"567"
    7 t8 `+ Y% v* }! L+ ?$ P$ t" b2 ?" C
      N% A0 k- ~% `1 P4 S; p! E结果:
    # p7 R' X' w. b+ X7 b# q0 A8 J
    + D( a! g; i( X9 N$ }
    - |3 D" G0 A) D; h4 c; ^' p
    # t1 j' ^, O3 [3 l可以看到,搜索到了连续值“567”
      x" R" G, \, s- Y3 `2 T' F% @0 h+ }2 x2 W, z  w
    字符"+"重复前面一个匹配字符一次或者多次🍉
    % A0 _( e3 e, W( s
      A( E; X) z: X- }
    3 F. q9 e* Q5 }! Simport re
    : w" l* a  t! Y# f& y
    6 g8 ]$ \7 I* J$ v% ~% V- U+ W! Qr=r"b\d+"
    , j! @8 J& V  bm=re.search(r,"a12b1233cd")
    ! g: ?' U2 N& o6 mprint(m)3 ~) p: Q4 X8 g
      Z: C* e( Q( Q
    这样,结果就是b后面的连续数字2 g! S4 V% v8 W5 |2 j) k
    . ]* i. E( Z' e8 e4 B+ @# B
    结果:; G: b) r; k. [; `
    . Q$ V* E) B; q" ]& e/ b$ M/ X
      _* o( \0 X5 Z

    2 B2 K( \- g4 w7 M$ X字符"*"重复前面一个匹配字符零次或者多次🍉
    4 `9 t3 u; t: L. ]) b7 ]6 P“*" 与 "+"类似,但有区别,列如:
    % R0 I2 X) o$ U& _4 o4 x可见 r"ab+“匹配的是"ab”,但是r"ab “匹配的是"a”,因为表示"b"可以重复零次,但是”+“却要求"b"重复一次以上
    # p: h0 ]7 K7 k9 q5 C  d, n. v
    6 B+ D9 v( M& K" R9 M/ S
    $ q: w) S6 F) D$ N8 k( K% c) t; `6 c5 `) D' z) R
    import re
    + r. T7 Q) q4 v! n& q) }, a
    * p$ T1 j# Z; X0 _- ?9 Or=r"ab+"3 C$ B( X! Y& f7 ^
    m=re.search(r,"acabc")
    4 }) A- z/ b! P8 v$ R- g+ T4 y* I& yprint(m)
    3 e( N/ y* A9 ^( i
    9 V6 s$ c) C9 R- M5 f5 N  N' ur=r"ab*"
    7 G# w. Y; b6 ]2 T1 Lm=re.search(r,"acabc")& ^" F9 o6 Q6 R+ @0 @6 G
    print(m)
    ) A0 x9 {& v0 j2 }9 ]' a 结果:
    . d5 P& S* x. M- ]! [. i/ o/ l/ p- L
    9 m" S3 T& t9 x5 W' {

    5 A& l2 k- H; Y2 [! m字符"?"重复前面一个匹配字符零次或者一次🍉: W. c0 D- W5 X
    匹配结果"ab”,重复b一次
    2 i4 u! j) O2 L# B' O9 g, b- M7 w! o$ g" Q- k! A2 ]% h

    # E$ c6 T% D$ O6 a. E& \0 D$ O
    1 t0 b/ k0 i1 a- p/ himport re
    9 w! m/ ?: }% l$ U: Z5 t0 \2 h  N. [* k# [% h* Y0 P  T
    r=r"ab?"
    6 e- Y2 C! ?' V) _6 \5 ?m=re.search(r,"abbcabc")* G2 d* L7 f1 d) P% [1 t# c* l
    print(m)
    0 r5 ^7 {5 W7 B$ { 结果:
    - {8 B; A+ ?9 o8 J6 j# C) K
    $ _1 ]1 q5 i- ~" Z3 \7 a3 }+ Z3 p1 B6 S) r  W* A
    3 K; P9 i  x: i: g4 x% W8 K* G
    特殊字符使用反斜杠"“引导,例如”\r"、"\n"、"\t"、"\"分别表示回车、换行、制表符号与反斜线自己本身% U8 \# u  v( p4 E- P8 b

    ( B' U& a3 b: L$ c. M0 q+ A' W& U9 zimport re2 u: G" m0 a% s6 ]7 k

    5 k5 {4 P$ ?/ R# O1 yr=r"a\nb"; r8 ^( u* N* n2 ?
    m=re.search(r,"ca\nbcaba")3 s: s# Y0 j$ O" `9 [9 M$ a: M# q
    print(m), ~. d  p$ D" a0 O/ A0 O$ L2 l
    结果:
    0 W& q( k. h5 x( `5 F# J, r% k  x$ X+ d+ w2 E
    & Y* ]- z; F; B7 t
    ( y& U7 \% A1 _1 M4 Z3 l* P
    完整表🔍
    0 }* h1 }. q0 F其实上面说这些都是比较基础,比较简单的,还有复杂一点的,都在这张表里
    - E% `2 l9 l  [5 H8 I8 D# `
    ! q7 I3 J5 e: A$ O3 @- S1 G* n# w; V5 q5 a  H9 ?! n- h

    $ H0 G6 a1 K3 `" m. k match用法🤔
    % T/ T. j  X+ \7 Ematch用法😃
    : k- m( O2 n2 `" y7 [语法:re.match(pattern, string[, flags])  
    ; ]" U/ _# Y' C7 ]% G$ W3 [0 H7 t( S5 x4 l% e8 k
    从首字母开始开始匹配,string如果包含pattern子串,则匹配成功,返回Match对象,失败则返回None,若要完全匹配,pattern要以$结尾。/ h9 J( e. h' c- V8 q. l8 A

    # B; _* {) y9 x/ _: }. M, S#示例:
    " f, ^6 U3 ~  i9 k) Q) L/ hname='张三'/ Z1 f+ x$ l1 {$ [
    if re.match('张\w+',name):8 ]( {5 _( x9 D6 r6 {2 ~# z
        print('{},你好!'.format(name))
    1 \$ @& s4 ?' `    # 张三,你好!
    1 b/ g" |5 J9 T# D+ V% h输出结果:张三,你好: F- U8 f& }; Z

    7 U5 A4 T6 a  z! V' g( S2 H
    ; \. V4 f" c. X, E. |6 ]) P* p$ e. R9 A- N4 }9 y6 r$ W* y# @( h
    张三:谁叫我?
    2 Y: A3 O$ j3 j2 |8 {# T0 j
    4 r: b  t9 ?/ L6 Y& L% _不开玩笑了,继续
    * @" d, o3 b3 h
    5 w  p$ o( S" z$ c总的来说,match就是3 N" @+ M1 D8 u4 E; Z

    . k& l" Z* A% Z- V, L返回匹配的match对象
    7 W( j, h2 }+ Q+ {# y: L7 z/ J默认从给定字符串的开头开始匹配、即使正则表达式没有用^声明匹配开头' y- z* O, j( X! X# @
    match对象🍊
    " G8 v0 k5 F- v, W& O8 `: AMatch对象的几个属性: % D' I3 q! X3 t& N$ |+ ?/ M( m

    + _- t7 g( _5 c0 D$ B5 \! Q注意,前面是有“.”的
    - u2 t( J1 S# ?7 E+ S: p: D1..string 待匹配的文本
    5 ^/ w) ^; N4 D2..re 匹配使用的pattern对象6 H# [' A: r& k( Y# y/ n
    3..pos 正则表达式搜索文本的开始位置
    * b  U# o  f& t4..endpos 正则表达式搜索文本的结束位置
    * M% d2 [5 |) m6 Z( l0 P( |7 QMatch对象的几个方法:
    ' f0 `9 D& M* J1.group(0) 返回匹配到的子串
    $ p& p/ j7 X, q2.start() 返回匹配子串的开始位置6 R2 E, K8 G- ~; W
    3.end() 返回匹配子串的结束位置6 \( L9 q  F. ]+ i) x7 G# r+ o
    4.span() 返回start()、end()
    # y- Z/ c+ m7 [# R5 S- }8 l9 T2 ~' x9 ^* X+ L6 j9 n9 A3 \* v
    数量词🍊
    , G6 f3 V2 [; b, [6 `+ r1 b
    ; l1 E" B9 ]9 x) E) X/ q4 i. a6 ~1 l- |4 g# T. I
    匹配开头、结尾🍊; n: Q2 \' n1 v/ j2 O$ M' D9 V

    3 f' E& }* N7 C! }8 w+ W$ B, [& b 匹配分组🔍
    7 M* b; `* S- N4 X! D" |2 L# ?( R0 x9 \, a! Y6 a

    0 v( ^  f& Q8 o/ ?0 u" \7 X, I好了,看了上面几张表,其实我觉得最重要的在下面  
    $ C+ z4 K2 U- n* J6 V2 j; K# M1 k4 C! z
    match总结😄
    4 T: m. D6 f, f6 o: b# o3 ]+ l其实没啥好总结的,但你要看懂这张图,这个很重要
    2 R# o, x4 [5 n0 u, z3 @) `% m* ^& e, @& |: C% O4 Z/ Q
    1 r. I2 X1 n: K2 R' V5 _, o
    ' f+ E; [* ~: n
    我框出来的是我自己感觉经常用的
    & y- Q' t- X" x& F! a$ B8 R$ z. [' ~/ a: V
    其实我自己刚学的时候也听不懂,现在觉得可简单了2 W& M4 N* O) L8 g

    9 j% z4 q! z& u2 e% y# i. Z所以,你应该现在就觉得很简单吧?5 S! {- q2 w3 T- [) f

    7 [8 O3 R' [8 \0 n但是,正则表达式的字符很多,容易记混,一不小心就好几十个报错,很让人崩溃
    8 f! j6 O! c1 Z9 y+ a( c( ^3 i+ V7 x' F! k7 e4 }9 \3 @/ l3 s+ T7 v% s
    8 {4 }  V( z( R# v4 l

    5 z! f; H* w; e+ ]$ y  E9 G1 B实践出真知 凸(`0′)凸 ☀️
    + D0 ^% R8 P" O; I# ^; ~学了这么多,是不是想撸个程序了?
    / X+ u% f5 n$ D# u: v, k; a% [3 s, w: a6 `7 @
    已经给你准备好了6 Y1 ^; w- D  i1 i+ y
    2 S) B1 [! S! J4 }
    程序效果:输入手机号,通过正则表达式判断手机号合不合法,1 T, e7 _- J! X, f. p+ u' k3 M

    - s+ |: h! _' `+ C, b如果合法,就输出这个手机号的信息(所属地等)4 `9 c4 I* U  w  s6 T9 v

    1 x3 q) d* f+ i' n如果不合法,就重新输入,简单吧?
    + q" j6 S+ ?8 x3 T; Y& _: m$ V7 M/ s7 X* ?
    这里我想重点说一下怎么获取手机号的信息9 M$ T: {3 y; M# B5 a! a" o

    * k# K% _8 ]0 ^我一开始打算上网上百度一波的,没想到直接复制过来23个报错、我也是醉了4 u( T0 \' J9 g: _% Y

    / B8 J( U- x, Y% w) H7 _
    7 K7 E1 {0 A8 v5 _2 W. L8 Y/ j# {( o1 Q7 X. H6 g
    哎呀,不能再发表情包了
    / i5 p% {8 E7 y% C8 W: R0 K3 c' F  S$ f. m5 M0 f8 z  m
    5 o+ [, n) Z+ N' J6 ]

    6 H) S2 F$ x* g. O& R4 Q9 Qε=(′ο`*)))唉,还是自己写吧、、、. e* q$ k& M$ n" h

    7 G6 }6 W/ o# b7 [5 X我想起了有个模块叫phone,可以实现这个功能
    2 Y4 |& W" b9 w* y5 P" E# ~2 f- [! C% N' ?) }" y' ^
    但是你可能还没有安装这个模块,要按命令行模式下输入pip install phone
    0 B. V& y7 c6 _# ~! O- y
    $ Y) s  r, I$ C( g9 g等个六六四十九秒就下载下来了
    ( T9 l9 @- ?; r* W  e. K; z3 E' I
    然后你就可以体验一下了7 J4 k# f' _0 m; Q

    5 Z7 i  c+ F7 o代码(PyCharm运行通过)
    / [& c5 ?4 U  o
    . M( p' Y$ t& k# U* U  Q8 q  bimport phone
    , [. O0 H3 J, r, T9 \+ I4 dfrom time import *
    6 d: W9 `" g! E; m% A$ ]+ @( [import re* x' K, C/ O6 v. d  ?8 z
    " i0 J- J7 T0 k/ T6 j
    def begin():6 s7 V! |0 c' j$ `$ C. A$ `
        print("欢迎来到查询小程序")
    2 z' |( V% r2 [4 H2 q    print("1.查询")$ c* i0 t8 P: f! J
        print("2.用户")5 Y; w! E4 M/ \9 w* q

    ' B1 u/ Y: l* t) ^8 V1 L+ y# F, a5 T5 F
    def p(n):
    4 f$ X: o7 M( R( I    if re.match(r'1[3,4,5,7,8]\d{9}', n):8 h% W: H4 V% Q( b
            if re.match(r'13[0,1,2]\d{8}', n) or \
    $ K4 y& E$ }! o                re.match(r"15[5,6]\d{8}", n) or \
    . @, H8 f. z0 z' O8 a! m. A                re.match(r"18[5,6]", n) or \' C2 |2 l: s6 h# K% i
                    re.match(r"145\d{8}", n) or \2 v- K: B+ b4 i& H' I
                    re.match(r"176\d{8}", n):
    3 L5 ~- }2 q0 L' d1 K9 U  Z            return True
    : y( `( g; N: b" ^% ]7 k4 h        elif re.match(r"13[4,5,6,7,8,9]\d{8}", n) or \
    + _$ |8 M+ i# }. z$ J# o/ b$ z                re.match(r"147\d{8}|178\d{8}", n) or \
    9 |& ~) L6 `1 r) a3 c' J                re.match(r"15[0,1,2,7,8,9]\d{8}", n) or \
    1 L' V3 N3 u6 d; H  x! E$ h& b6 S                re.match(r"18[2,3,4,7,8]\d{8}", n):1 w& @6 P6 ~) e; l
                return True
    ' b# Y6 Q; Q) W. q* e3 Y7 i        else:
    # q8 V8 v% s8 K6 K7 Q/ w            return True/ u: a5 N9 ?4 V3 j! [/ A
        else:
    5 f1 m9 D# R+ @% Y9 o3 ^        return False
    6 P7 D' _" G! X1 l8 ^; ?0 M. _1 |. V8 o, D0 M& J
    if __name__ == "__main__":
    ; b7 C% O5 D/ X3 k1 `( ~    s=0
    & {6 o5 G+ X! i* V" H# |) z' a    begin()3 b- k! z- L3 b1 c8 k) G8 f
        while True:
    . e' B% D7 m, B2 t        op = int(input("请输入:"))
    6 C( M. h; s. o& w2 i9 x        if op==1:6 p* L- U* n" c: [1 N( y! ~0 |
                phoneNum = str(input("请输入你的电话号码"))
    % t+ U0 n6 A7 m' o* U5 j$ r0 j0 R            if p(phoneNum)==False:- v) j! G& s' d" O  Z6 }
                    print("该手机号无效")+ L$ h1 N. C" H+ |. }3 V# {
                    for i in range(100):
    - }6 K! Q+ q) L! \; W  g                    print('\n')- ~' x( f8 y7 ~/ {3 D3 ]' D, S0 T
                    begin()
    # c' V* Y2 m. z; w7 B3 E            else:  g( |1 z+ ~3 z( _  t, k6 T( f
                    info = phone.Phone().find(phoneNum)- e/ D5 K( g. S7 I" J. C1 ~
                    print("手机号码:"+str(info["phone"]))! N: e$ ~8 r9 [
                    print("手机所属地:"+str(info["province"])+"省"+str(info["city"])+"市")$ }7 s: s5 T5 n" G2 O3 D$ y# }
                    print("邮政编号:"+str(info["zip_code"])), `2 ~( V0 P. |8 b
                    print("区域号码:"+str(info["area_code"]))) k: @$ {  c, `9 A
                    print("手机类型:"+str(info["phone_type"]))
    7 T' \5 s- E% y2 [& B" W                s+=15 R1 Y% E( ~2 V6 r: P
                    i = input("输入任意数退出...")
    ! G3 Z- B. X  V5 g) @4 v1 b7 O                for i in range(100):
    2 |; X4 m% d: U  e1 b% ?% Q                    print('\n')% r! r) W5 s2 V
                    begin()
    " x1 R2 f4 Q: c; s        if op==2:
    % a3 q: q; e9 ]            print("使用次数:"+str(s))% v$ i! T5 \2 ^# I9 P
                i = input("输入任意数退出...")( I) X0 B9 o. a8 d
                for i in range(100):9 a) m. c2 Z+ [; J, [( E7 L3 D0 B
                    print('\n')
    . M  d3 u& J# l: f$ E            begin(), ~) Q3 ]7 e5 q2 _" b0 ]
    3 E' [5 e9 H) R' g  Q- Q: f3 Y9 I9 _
    写在最后🧐; v9 `  u  L) z4 ]5 [" s% P% G6 R9 M
    ————————————————
    8 o9 e4 q3 r3 T" T6 ?版权声明:本文为CSDN博主「YR_T」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    2 N9 ^+ g  P6 H8 E$ l! O原文链接:https://blog.csdn.net/m0_64036070/article/details/123853489
    1 p9 B. W( n2 [4 u
    4 C- \5 ^- g5 H' k9 ?% |6 ?& a& K: u4 z4 r, A0 f/ v. r# K& c( T- P
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-10 13:17 , Processed in 0.437223 second(s), 51 queries .

    回顶部