当前位置: 首页 > 知识库问答 >
问题:

使用逻辑或时正确使用Java正则表达式中的匹配器组

杨腾
2023-03-14
Lat: 33.1234 Lon: -110.1234
Lat, Lon: 33.1234 -110.1234
Lat, Long:\s*([-\d\.]+)[\,\s]+([-\d\.]+)|Lat:\s*([-\d\.]+)\s*Lon[g]?:\s*([-\d\.]+)

我意识到我可以测试null...但是我很好奇是否有一种方法可以让匹配器只返回包含lat&lon值的两个组,而不管给出了哪种字符串格式

共有1个答案

岑驰
2023-03-14

这个正则表达式与您的两个示例案例相匹配。

稍后(?:,\s+长?)?:\s*([-\d\.]+)(?:\s+\s*,\s*)(?:长?:\s+)?([-\d\.]+)

https://regex101.com/r/d3abpx/1

 Lat                           # Lat label
 (?: , \s+ Long? )?            # optional , Long label
 :                             # colon
 \s*                           # optional space
 ( [-\d\.]+ )                  # (1), lat value
 (?: \s+ | \s* , \s* )         # Seperated by space or comma ( must have one )
 (?: Long?: \s+ )?             # optional Long label and colon
 ( [-\d\.]+ )                  # (2), long value
 类似资料:
  • 问题内容: 当字符串以数字开头时,我需要匹配,然后是一个点,然后是一个空格和1个或多个大写字符。匹配必须发生在字符串的开头。我有以下字符串。 我尝试过的正则表达式是: 它不匹配。一个有效的正则表达式将对这个问题有什么作用? 问题答案: (对不起,我先前的错误。大脑现在坚定地投入了。嗯,也许。) 这有效: 分解: =字符串开头 =一个或多个数字 (之所以转义,是因为它在字符串中,因此) =文字(或者

  • 问题内容: 我从以下格式的文件中获取输入: 现在,我想在我的Java代码中读取int1,int2,int3和int4。我该如何在Java中使用正则表达式匹配。谢谢。 问题答案: 为了避免空值:

  • 问题内容: 原始数据是: 我想匹配一条线,但是不能使用 但是,我可以使用match 。 我该如何搭配 问题答案: 默认情况下,和分别匹配输入的开始和结束。您需要使用启用多行模式,这会导致并匹配行的开始和结束: 演示: 产生以下输出: 编辑我 没有任何匹配的事实是因为默认情况下,和不匹配。如果您通过启用了DOT-ALL ,也使匹配了它们,那么您将看到整个输入字符串都被匹配了: 编辑二 在这种情况下,

  • 本文向大家介绍中文正则表达式匹配问题之正则表达式中文匹配使用方法,包括了中文正则表达式匹配问题之正则表达式中文匹配使用方法的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要讲如何使用正则匹配中文字符,中文正则表达式的匹配规则不像其他正则规则一样容易记住,下面一起看看这个中文正则表达式是怎么样的。 \w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下 匹配中文字符的正则表达

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 问题内容: 我要匹配具有以下格式的日期: 2010-08-27、2010 / 08/27 现在,我对实际可行的日期不是很确定,只是日期格式正确。 请告知正则表达式。 谢谢 问题答案: 您可以使用模块来解析日期: 输出: 因此,捕获将告诉您日期是否匹配: 为了允许使用各种格式,您可以测试所有可能性,或者先解析字段: