作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Pattern pattern = Pattern.compile("\\d{4}\\s+[a-z|A-Z]{2}\\s+PLAIN\\sTEXT\\s+(.*?)\\(NS\\)");
Matcher matcher = pattern.matcher("2007 AL PLAIN TEXT ap2345 (NS)");
while (matcher.find())
{
System.out.println(matcher.group(1));
}
我希望它适用于 input1 = 2007 AL PLAIN TEXT ap2345 (NS)
(上面的正则表达式确实适用于此),但它不适用于 input2 = "ap2345"
>。我想在同一组号中捕获这两个字符串,这意味着我需要将之前的捕获设置为可选。我怎样才能做到这一点?
编辑:::当字符串值为 2007 AL PLAIN TEXT ap2345 (NS)
或 ap2345
最佳答案
我不确定我是否正确理解了你的问题,所以在我解释任何内容之前只需检查这个正则表达式
(\\d{4}\\s+[a-zA-Z]{2}\\s+PLAIN\\sTEXT\\s+)?(\\w+)(\\s+\\(NS\\))?
喜欢
Pattern pattern = Pattern
.compile("(\\d{4}\\s+[a-zA-Z]{2}\\s+PLAIN\\sTEXT\\s+)?(\\w+)(\\s+\\(NS\\))?");
Matcher matcher = pattern.matcher("2007 AL PLAIN TEXT ap2345 (NS)");
while (matcher.find()) {
System.out.println(matcher.group(2));
}
<小时/>
2007 AL PLAIN TEXT ap2345 (NS)
输出的示例 1 -> ap2345
ap2345
输出的示例 2 -> ap2345
此正则表达式将尝试将可选部分 2007 AL PLAIN TEXT
存储在组 1 中。如果字符串不包含此部分,组 1 将包含 null
。没关系,因为我们只对其后面的部分感兴趣,它将存储在组 2 中。我假设第 2 组只包含一个单词,这就是我使用 \\w+
的原因(\\w
匹配字母、数字和 _
)。如果您想接受更多单词,请尝试使用 (.+?)(\\s+\\(NS\\)|$)
代替。
关于java - 如何使一个组可选,它捕获模式并捕获相同的组号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15890038/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!