gpt4 book ai didi

java - 正则表达式只适用于字符串吗?

转载 作者:行者123 更新时间:2023-11-30 06:11:09 24 4
gpt4 key购买 nike

我想知道正则表达式的概念是否只适用于 Java 中的字符串类型,或者也可以应用于数值。例如:

  • Find all integers from a list of integers which are greater than x but less than y

  • Find all integers from a list of integers greater than x

  • Find all integers from a list of integers which are less than ( x-10)

数值的概念是否也存在但未在 Java 中实现,或者对于数值的实现是否太具有挑战性?

据我了解,regex应该适用于任何涉及搜索的地方(不考虑值类型)。


正如答案和评论中所建议的那样,Java 8 的 Stream 在功能上实现了我正在寻找的功能(通过过滤器等),但我的问题主要是缺少 list of regex patterns 中的简写形式。对于数值;例如,如果 > x 作为模式存在,那会更容易。

最佳答案

正则表达式实际上与 finite-state machine 属于同一家族,其想法是您拥有所有已知字符的字母表,并且能够通过表达式本身表示捕获状态。

例如,表达式Colorado License Plate Number [A-Z]{3}-\d{3}有很多东西可以捕获,但它需要字符串“Colorado License Plate Number”作为该州的一部分。是的,包括空间。

您所代表的表达式没有任何特定于状态的信息;也就是说,他们专门检查 boolean 响应。

  • 从整数列表中找出大于 x 但小于 y 的所有整数

    • 这表示通过列表进行过滤操作,给定列表的一个元素i , 发现 x < i < y
  • 从大于 x 的整数列表中找出所有整数

    • 这表示通过列表进行过滤操作,给定列表的一个元素i , 发现 i > x

...等等。

这些更好地表示为 predicates . Google Guava 有 an entire class专用于它们,Java 8 中的 lambda 可以在流中替代它们。

所以,是的,正则表达式实际上只适用于字符串。如果您想要更复杂的 FSM,则可以编写一个,但不使用本地正则表达式引擎。

关于java - 正则表达式只适用于字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34584273/

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