【问题标题】:Finding and replacing the parentheses in a string in Elm 0.16在 Elm 0.16 中查找和替换字符串中的括号
【发布时间】:2016-02-04 21:17:02
【问题描述】:

我目前正在尝试使用 Elm 0.16 中的正则表达式在字符串中查找左括号,并将每个括号替换为后跟一个空格的括号。我还计划将字符串中的每个右括号替换为一个空格,后跟一个右括号。这样我就可以用逗号替换空格来分隔字符串。我尝试使用正则表达式的字符串在这里:

((data "引用数据" 123 4.5) (data (!@# (4.5) "(more" "data)")))

我已经使用正则表达式来删除用于转义引号的任何反斜杠。为此我使用了这个功能:

getRidOfBackslashes : String -> String
getRidOfBackslashes sExpression = 
    sExpression
      |> Regex.replace Regex.All (Regex.regex "\\g") (\_ -> "")

然后我尝试使用以下函数来实现前面提到的关于左括号的目标:

createSpacesParentheses sExpression =
     sExpression
       |> (\_ -> getRidOfBackslashes sExpression)
       |> Regex.replace Regex.All (Regex.regex "\(") (\_ -> "( ")

查看不同的 javascript 正则表达式检查器,我非常简单的正则表达式似乎可以满足我的要求,但 Elm 编译器却给了我错误:

(line 1, column 3): unexpected "(" expecting space, "&" or escape code

27│       |> Regex.replace Regex.All (Regex.regex "\(") (\_ -> "( ")
                                                      ^
Maybe <http://elm-lang.org/docs/syntax> can help you figure it out.

我想知道我是否以正确的方式处理这件事,是否有人可以提供帮助。提前致谢。

【问题讨论】:

  • 如果转义有问题,使用字符类:[(]。但似乎你也可以双重转义 (: \\(
  • 非常感谢您的完美运行。

标签: regex elm


【解决方案1】:

this reference:

小心正确地转义反斜杠!例如,"\w" 正在转义 信 w 这可能不是你想要的。你可能想要"\\w" 相反,它转义了反斜杠。

因此,简单的方法是只使用字符类[(](在字符类中,除了\]^- 之外的所有“特殊”字符都失去了它们的特殊性意思)或者你可以使用\\(

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 2015-04-16
    • 2014-03-09
    • 1970-01-01
    • 2015-09-22
    • 2019-06-24
    相关资源
    最近更新 更多