【问题标题】:Select part of line in regular expression在正则表达式中选择部分行
【发布时间】:2019-02-20 10:27:25
【问题描述】:

I have this string

#1#http://test.ir:8080/srvSC.svc#1#
#2#http://test.ir:8081/srvSC.svc#2#
#3#http://test.ir:8082/srvSC.svc#3#
#4#http://test.ir:8083/srvSC.svc#4#
#5#http://test.ir:8084/srvSC.svc#5#
#6#http://test.ir:8085/srvSC.svc#6#

我想选择所有#1# #2# ...,所以为了写这个表达式:^(^\#.\#),但它只选择第一行。我如何选择第一个#.#和最后一个#.#

【问题讨论】:

  • 删除你的两个起始锚点,它按预期工作。也不需要那个捕获组,因为它与整个比赛相同。你也不需要转义#s。
  • 谢谢老兄。 regex101.com/r/7Er0Ch/3为什么最后一行没有选中? @CertainPerformance
  • 因为#.# 只匹配#s 之间的一个字符。你想要#\d+#吗?
  • 就是这样。但是现在如果我想选择除#\d# 之外的所有单词我该怎么办?@CertainPerformance
  • 这就是你真正想问的问题吗?比如你想匹配http://test.ir:8080/srvSC.svchttp://test.ir:8081/srvSC.svc等等?

标签: regex regular-language


【解决方案1】:

你可以使用

^(#\d+#)(.+)\1$

这将捕获组中的第一个#s,重复任何字符,然后匹配第一组中匹配的相同字符。您想要的字符串将在第二个捕获的组中。

https://regex101.com/r/7Er0Ch/5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-29
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 2011-06-18
    • 2016-03-26
    相关资源
    最近更新 更多