您好我试图使用Java正则表达式从以下路径信息中获取所需的上下文路径.
String path = "/Systems/lenovo/";
Run Code Online (Sandbox Code Playgroud)
我想写正则表达式分别得到"/ Systems"和"/ lenovo".
我使用组尝试了以下正则表达式但未按预期工作.
String systemString = path.replaceAll("(.*)(/\\w+)([/][\\w+])", "$2") - to get "/Systems" - not working
String lenovoString = path.replaceAll("(.*)(/\\w+)([/][\\w+])", "$3") - to get "/lenovo" - working.
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我Regx可能有什么问题吗?
您不应该使用此replaceAll方法groups ($3)来获得您想要的东西。
您的方法在幕后发生的事情是:
正则表达式(.*)(/\\w+)([/][\\w+])匹配字符串/Systems/l
您的表达分为以下几组:
$1 => (.*)
$2 => (/\\w+)
$3 => ([/][\\w+])
Run Code Online (Sandbox Code Playgroud)
每个组都匹配匹配字符串的以下部分/Systems/l
$1 => ''
$2 => /Systems
$3 => /l
Run Code Online (Sandbox Code Playgroud)
所以当你这样做时
path.replaceAll("(.*)(/\\w+)([/][\\w+])", "$3")
你本质上是在做
'/Systems/lenovo/'.replaceAll(`/Systems/l`, '/l') => '/lenovo'
Run Code Online (Sandbox Code Playgroud)
当你使用$2
'/Systems/lenovo/'.replaceAll(`/Systems/l`, '/Systems') => '/Systemsenovo/'
Run Code Online (Sandbox Code Playgroud)
因此,使用正则表达式组来完成此任务并没有真正意义,最好使用String.split本页其他人建议的简单方法
| 归档时间: |
|
| 查看次数: |
197 次 |
| 最近记录: |