我正在编写的程序(用Java编写)获取由三种部分组成的输入数据,用斜杠分隔/.部件可以是以下之一:
\w* \w*\(.*\) <.*>|\".*\".一个路径可以包含斜线.示例字符串可能如下所示:
bar/foo()/foo(bar)/<foo/bar>/bar/"foo/bar"/foo()
Run Code Online (Sandbox Code Playgroud)
具有以下结构
name/call/call/path/name/path/call
Run Code Online (Sandbox Code Playgroud)
我想将这个字符串分成几部分,我正在尝试使用正则表达式.我当前的表达式在调用和路径之后捕获斜杠,但是我无法在名称后捕获斜杠而不包括路径中可能存在的斜杠.我当前的表达式,只是在路径和调用之后捕获斜杠如下所示:
(?<=[\)>\"])/
Run Code Online (Sandbox Code Playgroud)
如何扩展此表达式以在名称后捕获斜杠而不在路径中包含斜杠?
(\w+|\w+\([^/]*\)(?:/\w+\([^/]*\))*|<[^>]*>|"[^"]*")(?=/|$)
Run Code Online (Sandbox Code Playgroud)
从字符串中捕获这个'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)"编辑:通常,我会进行正则表达式细分:
( # 开始第 1 组(用于交替) \w+ # 至少一个单词字符 | # 或者... \w+ # 至少一个单词字符 \( # 一个文字“(” [^/]* # 除了“/”以外的任何内容,尽可能多地使用 \) # 一个文字“)” | # 或者... < # 一个“<” [^>]* # 除“>”之外的任何内容,尽可能多地使用 >#a">" | # 或者... “ # A '”' [^"]* # 除了 '"' 以外的任何内容,尽可能多地使用 “ # A '”' ) # 结束组 1 (?=/|$) # 前瞻:...后跟斜杠或字符串结尾
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |