gpt4 book ai didi

java - 删除最后括号中的所有内容

转载 作者:行者123 更新时间:2023-12-03 07:54:28 24 4
gpt4 key购买 nike

我想删除括号 () 中的所有内容,如果(且仅当)它们位于末尾且不匹配以下模式 \(\d{4 }\p{Pd}\d{4}\) *。该模式只不过是括号中的日期范围,例如。 (1920-2988)

例如,我想匹配/捕获(用于删除,即string.replaceAll(my_regex_here, "")):

  • foo bar (blah)

  • foo bar(blah)blah (blah)

我不喜欢匹配:

  • 一些(废话)数据
  • 以下某个日期(1920-1921)。

我有以下正则表达式:\s*(.+?)\s*$ 。它往往匹配太多:

  • 一些数据(..)匹配(match)
  • 一些数据(1920-1977)

最佳答案

使用负向预测来避免日期范围,然后使用 [^()]+? 进行实际匹配:

\s*\(                  # Match 0+ spaces, a '(',
(?!\d{4}\p{Pd}\d{4}\)) # which is not followed by a date range and a ')',
[^()]+ # 1+ non-parenthesis characters and
\)\s*$ # ')' then 0+ spaces right before the end of line.

尝试一下on regex101.com

上面的正则表达式将不匹配:

parentheses with no content ()
years with more than 4 digits (1234-56789)
or less than 4 (123-4567)
nested ((brackets))
mismatched (brackets

关于java - 删除最后括号中的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76396610/

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