gpt4 book ai didi

java - 使用正则表达式区分字符串中的斜杠

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:19 25 4
gpt4 key购买 nike

我正在编写的一个程序(用 Java)获取由三种部分组成的输入数据,用斜杠分隔 / .这些部分可以是以下之一:

  1. 名称 匹配正则表达式\w*
  2. 匹配表达式 \w*\(.*\)调用
  3. 匹配表达式 <.*>|\".*\"路径 . 路径可以包含斜线。

示例字符串可能如下所示:

bar/foo()/foo(bar)/<foo/bar>/bar/"foo/bar"/foo()

结构如下

name/call/call/path/name/path/call

我想将这个字符串拆分成多个部分,我正在尝试使用正则表达式来完成此操作。我当前的表达式在 callspaths 之后捕获斜杠,但我无法让它在 names 之后捕获斜杠,而不包括可能的斜杠存在于路径中。我当前的表达式,只是在 pathscalls 之后捕获斜杠,如下所示:

(?<=[\)>\"])/

我如何扩展此表达式以在名称 之后捕获斜杠而不在路径 中包含斜杠?

最佳答案

(\w+|\w+\([^/]*\)(?:/\w+\([^/]*\))*|<[^>]*>|"[^"]*")(?=/|$)

从字符串 'bar/foo()/foo(bar)/<foo/bar>/bar/"foo/bar"/foo()' 中捕获这个

  • 'bar'
  • 'foo()/foo(bar)'
  • '<foo/bar>'
  • 'bar'
  • '"foo/bar"'
  • 'foo()'

不过,它不会捕获分隔斜杠(为什么?- 假设它们在那里)。

越简单(\w+|\w+\([^/]*\)|<[^>]*>|"[^"]*")(?=/|$)将分别捕获调用:

  • "foo()"
  • "foo(bar)"

编辑:通常,我会做一个正则表达式分解:

(           # begin group 1 (for alternation)  \w+       #   at least one word character|           # or...  \w+       #   at least one word character  \(        #   a literal "("  [^/]*     #   anything but a "/", as often as possible  \)        #   a literal ")"|           # or...  <         #   a "<"  [^>]*     #   anything but a ">", as often as possible  >         #   a ">"|           # or...  "         #   a '"'  [^"]*     #   anything but a '"', as often as possible  "         #   a '"')           # end group 1(?=/|$)     # look-ahead: ...followed by a slash or the end of string

关于java - 使用正则表达式区分字符串中的斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6124435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com