给定一个字符串,我需要找出在原始字符串中包含任何内容的开头的最大字符串,但在看到定义的模式时停止。
例如,假设“\nwww.{Google}.comcomxxxcom”作为字符串,“com”作为结束模式,
我们需要“\nwww.{Google}”。结果。
我尝试做类似的事情
val filter = """[\\s\\S]*(?!com)""".r
filter.findAllIn("\nwww.{Google}.com").toArray
但结果不是我想要的。
我也尝试过其他可能性,但失败了。有人可以帮忙吗?
最佳答案
您可以使用
val filter = """^[\s\S]+?(?=com)""".r
val s = "\nwww.{Google}.comcomxxxcom"
print(filter.findFirstIn(s))
// => Some(
www.{Google}.)
请参阅Scala demo
详细信息
^
- 字符串 anchor 的开头[\s\S]+?
- 第 1 组:任何 1+ 个字符,尽可能少,直到第一个com
- 匹配并使用。
请注意,由于您需要字符串中的单个匹配项,因此可以使用 findFirstIn
而不是 findAllIn
。
关于java - Scala:查找不以特定字符串结尾的最大字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48984941/