【问题标题】:Regex Extraction in ScalaScala中的正则表达式提取
【发布时间】:2015-06-18 14:53:33
【问题描述】:

我有一个包含如下数据的文本文件:-

1/4 cup chopped green onion
1/2 teaspoon salt
1 Tbsp cream
1 teaspoon vanilla extract

我想编写一个正则表达式,以便将我的数据分成 3 组,如下所示:-

'1/4' 'çup' 'chopped green onion'
'1/2' 'teaspoon' salt'
'1' 'Tbsp' 'cream'
'1' 'teaspoon' 'vanilla extract'

这意味着我的正则表达式应该有:

  • 第一个空格前的第一组,
  • 第一个和第二个空格之间的第二组和
  • 第三组在第二个空格之后直到行尾。

有什么方法可以做到这一点?

【问题讨论】:

  • 请粘贴您目前尝试过的代码
  • 我知道您要的是 Scala 和正则表达式。您可以通过使用 split 方法并按空格分割每一行来实现。它将被转换为数组,然后从该字符串数组中,您可以在第 0 和第 1 位置有 1/4 和杯子。您可以再次合并其余字符串以形成字符串。只是建议一种解决方法。
  • 显示您尝试过的正则表达式以及为什么它不起作用。如果您还没有尝试过,请查看正则表达式文档。
  • 从这里开始是匹配换行符regex101.com/r/pF9cV2/1的示例正则表达式。

标签: regex scala


【解决方案1】:
scala> val RecipeItem = """(\S+)\s+(\S+)\s+(.*)""".r
RecipeItem: scala.util.matching.Regex = (\S+)\s+(\S+)\s+(.*)

scala> val RecipeItem(qty, unit, ingredient) = "1/4 cup chopped green onion"
qty: String = 1/4
unit: String = cup
ingredient: String = chopped green onion

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-04
    • 2022-09-27
    • 2018-02-23
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    相关资源
    最近更新 更多