跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 这个正则怎么写啊?
未分類
2 11 月 2020

这个正则怎么写啊?

这个正则怎么写啊?

資深大佬 : llsquaer 0

用的 python

假设有一段文字

aaa.bbb.ccc.xxx(ddd.fffssss.eeee) 

所有字符都是不等长的单词..需要做的是.提取出如下格式内容

xxx(ddd.fffssss.eeee) 

提取出 . 号到 ( 号 和 ()号内 的文字..

这样的正则怎么写啊????

大佬有話說 (9)

  • 資深大佬 : gwy15

    .(w+(.+))

  • 資深大佬 : Fechin

    (?<=.)[^.]+([^)]+)

  • 主 資深大佬 : llsquaer

    @gwy15 十分感谢啊. 为什么把 w+ 改为 .+ 就变成了从开始位置的 . 开始了呢? 之前一直用 . 代表任意字符….所以之前一直没匹配上..

  • 資深大佬 : natsukage

    @llsquaer #3 因为正则表达式引擎在匹配字符串和表达式时,是从前向后逐个扫描字符串中的字符,并判断是否与表达式符合的。 .bbb.ccc.xxx 和 .xxx 虽然都可以匹配 .+,但是正则表达式扫描的时候,从 .bbb 就已经开始能够正常匹配,一直持续到后面的整个 .bbb.ccc.xxx(ddd.fffssss.eeee) 结束匹配完成。虽然.ccc.xxx(ddd.fffssss.eeee)和.xxx(ddd.fffssss.eeee)也能完成匹配,但是因为.bbb.ccc.xxx(ddd.fffssss.eeee)是先来的,所以正则表达式会娶先来的这个作为最终结果。
    如果想要解决这个问题,要么就是想办法让.bbb.ccc.xxx 和.ccc.xxx 不满足匹配,1 的解法就是这么做的,通过 w 取代 . ,这样.xxx 就是第一个满足匹配的前缀了,因此能够正常匹配到你想要的结果。
    要么就是提前把前面的部分( aaa.bbb.ccc.)全部用非捕获组匹配掉,然后在剩下的部分里匹配你想要匹配的内容,例如(?:.+.)(?<match>.+?([^)]+))

  • 資深大佬 : dorothyREN

    grep -o “[a-zA-Z]*(.*)”

  • 資深大佬 : dorothyREN

    “`
    [[email protected] ~]# grep -o “[a-zA-Z]*(.*)” a
    xxx(ddd.fffssss.eeee)
    [[email protected] ~]#
    “`

  • 資深大佬 : dorothyREN

    re.search(r”.[^.]*(.*)”, a)

  • 資深大佬 : huyangabc

    .(w+(.*))

  • 主 資深大佬 : llsquaer

    @natsukage
    @dorothyREN
    谢谢你们俩的解答…通过测试,终于算是搞明白了.

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具