gpt4 book ai didi

java - Java 中使用正则表达式模式忽略空格和注释

转载 作者:行者123 更新时间:2023-11-30 02:49:36 28 4
gpt4 key购买 nike

我正在开发一个 Java 程序,我需要帮助来创建此模式:

I\sam\s(.+)

我想忽略第一组之后的所有空格,例如,如果名称是“George P”,则应仅计算“George P”。我还想考虑注释字符 *,忽略此后的所有字符。如果没有 * 并且发现许多空格,则匹配器应该失败。

最佳答案

更新2
回复:DC正则表达式,每个评论。

^\s*(DC\s)((\d+)(\.)?(\d+)?)(?=\s*(?:\*|$))

 ^                             # BOS
\s* # Optional whitespace's

( DC \s ) # (1), DC + single whitespace
( # (2 start)
( \d+ ) # (3), 1 or more Digits
( \. )? # (4), Optional dot .
( \d+ )? # (5), Optional 0 or more Digits
) # (2 end)

(?= # Lookahead qualifier Assertion
\s* # Optional whitespace's
(?: # ---------------------
\* # Asterisk (comment)
| # or,
$ # End of string
) # ---------------------
)
<小时/>

更新
星号包含在第 1 组中:

I\sam\s([^*]*)(?:(?<!\s)|(?<=I\sam\s))

解释

 I \s am \s                    # 'I am '

( [^*]* ) # (1), Capture after that, but not asterisk or after

(?: # Trimming
(?<! \s ) # Trim, no wsp behind
| # or,
(?<= I \s am \s ) # Just 'I am ' behind
)
<小时/>

星号IS包含在第1组中:

I\sam\s([^*]*\*?)(?:(?<!\s)|(?<=I\sam\s))

(注意 - 修剪条件使此正则表达式更加复杂。最好不要在正则表达式内进行修剪,而是使用语言 api 在匹配后修剪捕获 1 的内容。)

解释

 I \s am \s                  # 'I am '

( [^*]* \*? ) # (1), Capture after that, but not after asterisk

(?: # Trimming
(?<! \s ) # Trim, no wsp behind
| # or,
(?<= I \s am \s ) # Just 'I am ' behind
)

关于java - Java 中使用正则表达式模式忽略空格和注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39104873/

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