Ocaml - 用逗号分隔的正则表达式匹配词不起作用
Ocaml - regexp matching words separated by comma doesn't work
我想知道一个字符串是否格式正确,如 "foo,bar,bang" 的逗号分隔的字符串和 "foo," 的字符串不应该匹配。
我不明白为什么我的正则表达式在以下示例中不起作用:
#load "str.cma"
let regexp = Str.regexp "[a-ZA-Z0-9]+(,[a-ZA-Z0-9]+)*"
let str = "foo,bar,bang"
let s = Str.string_match regexp str 0
我的正则表达式看起来不错,但最后一行的返回结果是错误的。我哪里错了?
圆括号 ( ... )
匹配 OCaml 正则表达式中的实际圆括号。要获得分组括号,您需要使用 \( ... \)
.
因此,以下应该有效:
#load "str.cma";;
let regexp = Str.regexp "[a-zA-Z0-9]+\(,[a-zA-Z0-9]+\)*"
let str = "foo,bar,bang"
let s = Str.string_match regexp str 0;;
备注:
- 需要在字符串常量中转义
\
,因此 \( ... \)
- 我修正了你的
a-z
范围
我想知道一个字符串是否格式正确,如 "foo,bar,bang" 的逗号分隔的字符串和 "foo," 的字符串不应该匹配。
我不明白为什么我的正则表达式在以下示例中不起作用:
#load "str.cma"
let regexp = Str.regexp "[a-ZA-Z0-9]+(,[a-ZA-Z0-9]+)*"
let str = "foo,bar,bang"
let s = Str.string_match regexp str 0
我的正则表达式看起来不错,但最后一行的返回结果是错误的。我哪里错了?
圆括号 ( ... )
匹配 OCaml 正则表达式中的实际圆括号。要获得分组括号,您需要使用 \( ... \)
.
因此,以下应该有效:
#load "str.cma";;
let regexp = Str.regexp "[a-zA-Z0-9]+\(,[a-zA-Z0-9]+\)*"
let str = "foo,bar,bang"
let s = Str.string_match regexp str 0;;
备注:
- 需要在字符串常量中转义
\
,因此\( ... \)
- 我修正了你的
a-z
范围