【问题标题】:How find \ in java regex? [duplicate]如何在java正则表达式中找到\? [复制]
【发布时间】:2018-04-13 05:59:00
【问题描述】:

我想在D:\it\2020\02-20\123\13.json 中找到????\??-?? 字符串。 ? 是一个数字。

如何使用 java regex 找到它?

【问题讨论】:

  • "D:\it\2020\02-20\123\13.json".indexOf("2020\02-20")
  • 在你的正则表达式中使用 \\ 它应该可以工作
  • 很确定你需要双反斜杠
  • 你必须在java中转义反斜杠,这样你就有String backslash = "\\";,当你想在正则表达式中使用反斜杠时,你还必须转义它,因此你需要String regex = "\\\\";

标签: java regex


【解决方案1】:

在 java 中编写正则表达式时,我们使用另一个反斜杠转义 \ 字符。所以如果你想放一个反斜杠字符那么你应该做\\但是如果你想转义反斜杠那么你用\\\\来做。以下正则表达式在您的情况下应该可以正常工作:

\\d+\\\\\\d+-\\d+

如果你想具体一点,请使用:

\\d{4}\\\\\\d{2}-\\d{2}

【讨论】:

  • 我更喜欢写String regex = "[0-9]{4}\\\\[0-9]{2}-[0-9]{2}"来减少反斜杠的数量,这样更容易不错过。
  • @devpuh 所以根据你的说法,为了防止写反斜杠,我们应该让它不可读?
  • @roundAbout 唯一的变化是\\d[0-9] 替换,这样您就不再拥有\\\\\\d等一下是\\\\\\d 还是\\\\\d,所有的反斜杠是做什么用的?
  • @devpuh 这太没必要了。能看懂四个反斜杠用例的人,也能明白一排六个反斜杠有什么用。你的评论毫无意义。
猜你喜欢
  • 1970-01-01
  • 2011-03-18
  • 2015-11-11
  • 2016-09-28
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
相关资源
最近更新 更多