正则表达式使用 ( ) 来搜索指示组的实例

发布于 2024-12-22 21:18:15 字数 559 浏览 2 评论 0原文

我想把 ( 和 ) 之间的东西拿回来。

但是 ( ) 用于组,并且使用转义 \ 我收到错误:

Pattern p = Pattern.compile("(\(.*\))");

意外的字符:'('

我怎样才能防止这种情况?

2010 年 10 月 13 日星期三 20:00:11 +0200(欧洲中部夏令时间)

2010 年 10 月 12 日星期二 21:27:48 +0200(欧洲中部夏令时间)

2010 年 10 月 12 日星期二 04:44:57 +0200(西欧 (zomertijd))

2010 年 10 月 12 日星期二 03:10:22 +0200(欧洲中部夏令时间)

2010 年 10 月 11 日星期一 23:10:04 +0200(欧洲中部夏令时间)

2010 年 10 月 11 日星期一 20:56:27 +0200(欧洲中部夏令时间)

(我使用java)

I want to get the stuff back between the ( and ).

But ( ) are used for groups, and with the escape \ i get the error:

Pattern p = Pattern.compile("(\(.*\))");

unexpected char: '('

How can i prevent this?

Wed 13 Oct 2010 20:00:11 +0200 (CEST)

Tue 12 Oct 2010 21:27:48 +0200 (CEST)

Tue 12 Oct 2010 04:44:57 +0200 (West-Europa (zomertijd))

Tue 12 Oct 2010 03:10:22 +0200 (CEST)

Mon 11 Oct 2010 23:10:04 +0200 (CEST)

Mon 11 Oct 2010 20:56:27 +0200 (CEST)

(I used java)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

舂唻埖巳落 2024-12-29 21:18:15

您还需要转义反斜杠;另外,我认为您希望在不同的位置进行转义(并且最好更具体地说明您想要匹配的内容):

Pattern p = Pattern.compile("\\(([^()]*)\\)");

说明:

\\(     # literal (
(       # start capturing group
 [^()]* # any number of characters except parentheses
)       # end capturing group
\\)     # literal )

You also need to escape the backslashes; also I think you want the escape in a different position (and better be more specific about what you want to match):

Pattern p = Pattern.compile("\\(([^()]*)\\)");

Explanation:

\\(     # literal (
(       # start capturing group
 [^()]* # any number of characters except parentheses
)       # end capturing group
\\)     # literal )
注定孤独终老 2024-12-29 21:18:15

在Java字符串中,你必须转义'\\'字符,尝试:

Pattern p = Pattern.compile("(\\(.*\\))");

In Java strings, you have to escape the '\\' character, try:

Pattern p = Pattern.compile("(\\(.*\\))");
垂暮老矣 2024-12-29 21:18:15

您需要转义转义:

"(\\(.*?\\))"

请注意,我还使用了“匹配任何内容”的非贪婪版本。

双转义是因为在字符串文字中,反斜杠用于转义序列(如 \n),因此如果您想在字符串中使用反斜杠,则需要使用另一个反斜杠对其进行转义。

You need to escape the escape:

"(\\(.*?\\))"

Note that I also used the un-greedy version of "match anything".

The double escape is because within a string literal, the backslash is used for escape sequences (like \n) so if you want a backslash in your string, you need to escape it with another backslash.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文