我有两个字符串“2007 AL PLAIN TEXT 5567(NS)”和“5567”的第二字符串中,我只要提取一组出这两者是5567串的。我如何为此编写一个java正则表达式?格式将是4位数年份,2位数字权限,字符串纯文本,然后我要提取的数字,最后(NS),但问题是除了数字可以是可选的,我该如何写一个正则表达式只能在一个组中捕获数字5567?正则表达式2不同的字符串占可选元素
1
A
回答
0
您需要使用?量词,这意味着匹配是可选的,“:”团体比赛,但不会创建该group.Here反向引用是代码:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Regexp
{
public static void main(String args[])
{
String x = "2007 AL PLAIN TEXT 5567 (NS)";
String y = "5567";
Pattern pattern = Pattern.compile("(?:.*[^\\d])?(\\d{4,}){1}(?:.*)?");
Matcher matcher = pattern.matcher(x);
while (matcher.find())
{
System.out.format("Text found in x: => \"%s\"\n",
matcher.group(1));
}
matcher = pattern.matcher(y);
while (matcher.find())
{
System.out.format("Text found in y: => \"%s\"\n",
matcher.group(1));
}
}
}
输出:
$ java Regexp
Text found in x: => "5567"
Text found in y: => "5567"
1
您可以在一行做到这一点:
String num = input.replaceAll("(.*?)?(\\b\\w{4,}\\b)(\\s*\\(NS\\))?$", "$2");
假设你的目标是“一个字长度至少为4个字母数字字符”。
相关问题
- 1. 正则表达式元字符筛选
- 2. 正则表达式可选字符
- 3. 可选字符串在正则表达式中不匹配
- 4. 正则表达式的正则表达式的Java字符串
- 5. 从字符串中提取元素的正则表达式
- 6. 正则表达式捕获多个字符串占位符
- 7. 正则表达式字符串提取元素
- 8. 正则表达式来匹配不同的字符串列表
- 9. 正则表达式的字符串不包含两个不同的字符串
- 10. 正则表达式正则表达式匹配字符串
- 11. 正则表达式2串
- 12. javascript的正则表达式选择与类=“产品”字符串的HTML元素
- 13. 十进制值和可选字符串的正则表达式
- 14. 正则表达式,可选地匹配字符串的开头
- 15. 匹配正则表达式中的可选子字符串
- 16. 正则表达式与可选的查询字符串参数
- 17. 正则表达式 - 捕捉一个可选的字符串
- 18. JavaScript的正则表达式 - 用不同的字符串
- 19. C#正则表达式。字符串后可选匹配
- 20. 匹配可选字符串正则表达式
- 21. 正则表达式和一个可选字符串
- 22. 正则表达式来第一可选字符串
- 23. 使用正则表达式替换不同的子字符串
- 24. 正则表达式将不同的字符串拆分为groupdict
- 25. 正则表达式Scala的字符串
- 26. 正则表达式的字符串
- 27. PHP字符串的正则表达式
- 28. Java的正则表达式字符串
- 29. 字符串的正则表达式
- 30. Mathjax的正则表达式字符串
为什么你需要第二个字符串的正则表达式,如果它已经是你试图提取的东西? – syb0rg 2013-04-07 23:59:52
请参阅:[正则表达式教程](http://www.vogella.com/articles/JavaRegularExpressions/article.html) – Justin 2013-04-08 00:00:12
因为输入可以是一个或另一个,而不是两个。 – Phoenix 2013-04-08 01:06:23