Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式将整个字符串放入组1_Java_Regex - Fatal编程技术网

Java 正则表达式将整个字符串放入组1

Java 正则表达式将整个字符串放入组1,java,regex,Java,Regex,试图在Java中使用正则表达式将地址拆分为数据库表中的两列。我要匹配的字符串是: 102主街105号楼 第一组应控制102号主街 第2组应持有105号楼 第三组不是真的需要,只是不知道如何才能做到这一点 使用下面的选项,所有内容都放在组1中 (.+)(\s(APT|LOT|BLDG|UNIT|TRLR|SUITE|STE)*) 我使用java中的组来设置属性 ====编辑====== 感谢@WiktorStribiżew的所有帮助,它让我非常接近我正在尝试做的事情 我现在使用的正则表达式是:

试图在Java中使用正则表达式将地址拆分为数据库表中的两列。我要匹配的字符串是:

102主街105号楼

第一组应控制102号主街

第2组应持有105号楼

第三组不是真的需要,只是不知道如何才能做到这一点

使用下面的选项,所有内容都放在组1中

(.+)(\s(APT|LOT|BLDG|UNIT|TRLR|SUITE|STE)*)
我使用java中的组来设置属性

====编辑======

感谢@WiktorStribiżew的所有帮助,它让我非常接近我正在尝试做的事情

我现在使用的正则表达式是:

(.+)\s((?:APT|LOT|BLDG|UNIT|TRLR|SUITE|STE).*)
组1不是懒惰的,我需要它使用奇数实例,其中令牌在字符串中出现两次

我也不确定单词boundary在做什么,并在我最近的代码中删除了它

这是我的测试用例

123 as St STE 5


120批次St批次A100您可以将以下正则表达式与
字符串匹配使用:

String p = "(.+?)\\s*(\\b(?:APT|LOT|BLDG|UNIT|TRLR|SUITE|STE)\\s+\\d+).*";

(?:…)
是一个非捕获组,因此它没有特殊的组。 惰性匹配
(.+?)
将匹配并捕获到组1中的所有文本,直到第一个空格,然后是备选文本。然后,第2组将保留一个选项+空格+数字

更新 下面是一个符合要求的正则表达式版本:1)第1组不是懒惰的(这意味着,
matcher.Group(1)
result应该从空白中删除),2)单词边界确保我们在“彩票”之前不匹配:


请参见

Try
(.+?)(?:\\s*(?:APT | LOT | BLDG | UNIT | TRLR | SUITE | STE)\\s+\\d+。
第一组匹配整个正则表达式字符串。我不知道这是否就是你所说的“第一组”,或者你是否已经说明了这一点。有没有办法让任何东西在抽签或任何代币之后出租。我可以吃很多。感谢您的精彩解释。这是一个稍微调整的问题:
String p=“(.+?)\\s*((?:APT | LOT | BLDG | UNIT | TRLR | SUITE | STE.*)”
。我没有添加锚点
^
$
,因为我假设您使用的是String.matches()。否则,在开头加上“^”,在结尾加上“$”。对不起,我说得再清楚一点会有帮助的。我确实试过了,但它给了我一个问题,比如100 Melot St.被分为第1组:100 Mer和第2组lot St.我在交替组之前添加了一个单词boundary
\b
。这应该足以解决这类问题。我将更新演示一旦我在我的桌面上。
^(.+)\s*(\b(?:APT|LOT|BLDG|UNIT|TRLR|SUITE|STE)\b.*)$