gpt4 book ai didi

java - Clojure/Java 中的模式匹配

转载 作者:行者123 更新时间:2023-12-02 16:00:07 24 4
gpt4 key购买 nike

我正在尝试使用正则表达式来匹配诸如 (letter(letter|number))* 之类的模式,我的意思是一个无限长度的字符串,但带有“以字母开头,然后是字母或数字”规则。

所以我在 clojure 中使用这个模式 #"\w+[\w|\d]*" ,但是如果我只使用它验证的数字,就像下面的代码一样,什么我做错了吗?

(re-matches #"\w+[\w|\d]*" "1")

最佳答案

其他答案看起来很适合您提出的问题,但听起来您确实可能希望验证标识符。请注意,Java API 提供了一些有用的实用方法来做到这一点。有时明确比正则表达式更好。

例如

(defn identifier? [s]
(and (Character/isJavaIdentifierStart (first s))
(empty? (remove #(Character/isJavaIdentifierPart %) (rest s)))))

在 java 6 及更高版本中,您可以执行以下操作:

(defn identifier? [s]
(and (not (javax.lang.model.SourceVersion/isKeyword s))
(javax.lang.model.SourceVersion/isIdentifier s)))

关于java - Clojure/Java 中的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9924096/

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