当前位置: 首页 > 面试题库 >

使用正则表达式拆分为单冒号而不是双冒号

吴康平
2023-03-14
问题内容

我有这样的字符串

"yJdz:jkj8h:jkhd::hjkjh"

我想用冒号作为分隔符,而不是双冒号。所需结果:

("yJdz", "jkj8h", "jkhd::hjkjh")

我正在尝试:

re.split(":{1}", "yJdz:jkj8h:jkhd::hjkjh")

但我得到了错误的结果。

在此期间,我逃避"::",用string.replace("::", "$$")


问题答案:

您可以继续讨论(?<!:):(?!:)。这使用两个否定的环视(回溯和回溯),它们断言有效匹配只有一个冒号,在它之前或之后没有冒号。

解释模式:

(?<!:)  # assert that the previous character is not a colon
:       # match a literal : character
(?!:)   # assert that the next character is not a colon

这两种环视都是必需的,因为如果只有后向,则正则表达式引擎将匹配其中的第一个冒号::(因为前一个字符不是冒号),如果只有前瞻,则第二个冒号将匹配(因为下一个字符不是冒号)。



 类似资料:
  • 我正在尝试匹配格式为[integer][colon][alphanum][colon][integer]的字符串。例如42100:ZBA01:20。我要用冒号来分... 我想学习正则表达式,所以如果可以的话,告诉我我做错了什么:这是我能想出的... 一开始我试着匹配字符串的部分,这些部分匹配整个字符串。您可以看出,我对正则表达式不是很熟悉。 编辑:正则表达式用于输入桌面应用程序。我不确定使用什么“

  • 问题内容: 我有以下Java正则表达式,我没有编写,并且正试图修改: 与此相似。 请注意第一个问号。这是否意味着该组是可选的?对应的后面已经有一个问号。冒号在正则表达式中有特殊含义吗? regex可以很好地编译,并且已经有JUnit测试显示它如何工作。只是我对为什么第一个问号和冒号存在感到有些困惑。 问题答案: 启动一个非捕获组。除非您在使用后从正则表达式中检索组,否则没有什么不同。请参阅什么是非

  • 问题内容: 由于IE7和IE8不支持对伪元素(例如或)使用双冒号表示法,并且由于现代浏览器支持向后兼容的单冒号(例如),我应该仅使用单冒号表示法以及何时使用IE8的市场份额下降到可以忽略的水平,然后回去查找/替换我的代码库?还是我都应该同时包括: 如果我关心IE8用户(可怜的朋友),单独使用double似乎很愚蠢。 问题答案: 请勿 同时 使用逗号和逗号。兼容CSS 2.1(不支持CSS3)的用户

  • 我有一个应用程序收到一个格式错误的JSON字符串,如下所示: null 也可能是格式错误的JSON字符串: 在本例中,不应替换消息值中的单引号。

  • 问题内容: 我写了一个正则表达式,用double-qoutes分割字符串: 如何将其扩展为与单双qoutes一起使用? 我试过了: 但这是行不通的 问题答案: 有两种方法:

  • 问题内容: 我正在尝试使用运算符-+ * /将正则表达式拆分为1.5 + 4.2 *(5 + 2)等式,以便将输出输入到数组中,以便我可以单独解析 我发现可以使用,但是如果我要保留小数点,它将不会拆分。 我已经尝试过分割,但是它不会在小数点上分割 问题答案: 您还可以使用?:避免捕获组。我把它简化了。