dongzeao5047 2018-05-10 04:05
浏览 398
已采纳

golang正则表达式将所有内容匹配为“。”。

I'm trying to do some regex in go match everything up to the first ..

The string would be this: hostkafka1.kafka.server:type=BrokerTopicMetrics,name=FailedProduceRequestsPerSec,topic=auto.tooling.files.received.v1.MeanR^Cost","metric_path":"dsdpecard01kfk06.kafka.server:type=BrokerTopicMetrics,name=FailedProduceRequestsPerSec,topic=credit-card.servicing.accounts.authorized-user.created.v1.MeanRate","type":null,"region":"us-east-1

and I want to match hostkafka1

I can use /.+?(?=\.)/ in other languages but can't get it to work in golang...

  • 写回答

2条回答 默认 最新

  • dsfphczao23473056 2018-05-10 04:12
    关注

    You can match everything from the start of the string that is not a period . with the following:

    m := regexp.MustCompile(`^[^.]+`).FindString(s)
    

    Playground Link: https://play.golang.org/p/OlPxIcrpmWx

    This works because:

    • the first ^ indicates the beginning of the string
    • the [^.] indicates matching a character that is not a period
    • the + is the repetition operator to indicate more than one

    This will automatically end the match when a . is encountered.

    If you want to ensure a period exists you can do the following:

    m := regexp.MustCompile(`^(.+?)\.`).FindStringSubmatch(s)[1]
    

    Playground Link: https://play.golang.org/p/oK0OvJzR2Ky

    This works a bit differently than above in that it needs to match a period and captures everything before it.

    • the \. at the end requires matching a period
    • the () capture group allows exclude the matching period in the result
    • the . in the parens indicates any character
    • the +? indicates a lazy repetition to stop as soon as the condition is met, here matching a literal period \.
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 SQL Server下载
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求