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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题