clojure-基本语法-正则表达式

[b][color=red]一、创建正则表达式[/color][/b]

re-pattern函数:
函数 (re-pattern) 接受一个字符串参数,返回一个正则表达式样式(java.util.regex.Pattern类的实例)。这个样式能用于正则表达式匹配

user=> (re-pattern "\\d+")
#"\d+"

也可以使用读取宏来直接用文本的方式输入正则表达式:在字符串前使用#符号。和用re-pattern函数生成的一样,例如,下面的表示方式和前面的例子是相同的:

user=> #"\\d+"
#"\d+"


re-matcher函数:
re-matcher函数接受两个参数:一个正则表达式样式和一个字符串。返回一个有状态的"matcher"对象,提供给其它正则函数而不是直接提供样式。Matchers是java.util.regex.Matcher.类的实例。

user=> (re-matcher #"\d+" "abc12345def")
#<Matcher java.util.regex.Matcher[pattern=\d+ region=0,11 lastmatch=]>
user=> (def matcher-num (re-matcher #"\d+" "abc12345def"))
#'user/matcher-num
user=> (re-find matcher-num)
"12345"

这里的def函数用于定义变量,后面会描述

[b][color=red]二、使用正则表达式:[/color][/b]
re-find函数:
re-find接受一个样式与一个字符串或者一个matcher。每次调用,返回matcher中下一个符合正则匹配的结果。

user=> (re-find #"\d+" "abc123")
"123"


re-matches函数:
re-matches接受两个参数:一个正则表达式样式和一个字符串。返回任何和正则表达式样式匹配的字符串,如果没有匹配则返回nil。例如下面的代码:

user=> (re-matches #"hello" "hello,world")
nil
user=> (re-matches #"hello.*" "hello,world")
"hello,world"
user=> (re-matches #"hello,(.*)" "hello,world")
["hello,world" "world"]


re-seq函数:
re-seq接受一个样式与一个字符串。它返回一个使用永久匹配(matcher)的lazy sequence(懒序列)(这个sequence在一个连续的样式匹配的字符串中)

user=> (re-seq #"\d" "clojure 1.1.0")
("1" "1" "0")
user=> (re-seq #"\w+" "mary had a little lamb")
("mary" "had" "a" "little" "lamb")


re-groups函数:
接受一个matcher,返回从接近的发现与匹配的集合。如果没有嵌套集合,则返回一个完全匹配的字符串。如果有嵌套集合,则返回vector集合,第一个元素是完全匹配的(非嵌套)

user=> (def phone-number "672-345-456-3212")
#'user/phone-number
user=> (def matcher (re-matcher #"((\d+)-(\d+))" phone-number))
#'user/matcher
user=> (re-find matcher)
["672-345" "672-345" "672" "345"]
user=> (re-groups matcher)
["672-345" "672-345" "672" "345"]
clooj, clooj,一个用于clojure的轻量级 IDE.zip clooj, clooj,一个用于clojure的轻量级 IDE clooj,一个面向clojure的轻量级 IDE应用程序clooj是一个小型的。简单的IDE ( 集成开发环境),用于编程语言,可以免费下载 。 clooj完全用clojure编写,使用基于swing的GUI 。 它是跨平台( 假 立即下载

相关推荐

incanter, 基于Clojure的R,像统计计算和图形环境用于 JVM.zip

incanter, 基于Clojure的R,像统计计算和图形环境用于 JVM 概述从Clojure开始。开始使用 Incanter包含在Clojure项目中。使用独立应用程序管理器使用情况文档和示例构建 Incanter依赖项概述和动机是面向JVM的 Incanter -

无涯教程-Clojure - 正则表达式

正则表达式是一种用于在文本中查找子字符串的模式,正则表达式用于各种编程语言中,并在LISP类型的编程语言中使用很多。上面的正则表达式用于查找字符串中数字的另一个出现。无涯教程网提供正则表达式是一种用于在文本中查找子字符串的模式,正则表达式用于各种编程语言中,并...replace函数用于将字符串中的子字符串替换为新的字符串值,但仅适用于第一次出现的子字符串。返回java.util.regex.Pattern的,然后将其用于其他模式匹配方法。replace函数用于用新的字符串值替换字符串中的子字符串。

无涯教程 297

Haslett是ClojureScript的一个轻量级WebSocket库

Haslett是ClojureScript的一个轻量级WebSocket库

正则表达式在Clojure中的应用

关于正则表达式基础概念,在我的另一篇文章 http://blog.youkuaiyun.com/zdplife/article/details/51866141有相关的总结,最近在学习函数式编程语言Clojure,因此将Clojure中经常使用到正则表达式的函数总结如下: 1. re-find函数: re-find函数用于查找字符串中满足给定正则表达式的第一个匹配的内容并返回:(re-find #"

zdplife的专栏 1600

Clojure入门教程- Clojure – Functional Programming for the JVM中文版

Clojure入门教程- Clojure – Functional Programming for the JVM中文版

基于FT2232集成USB直接实现XilinxJTAG和UART串口

使用“program_ftdi -write -ftdi FT2232H -serial 0ABC01 -vendor "my vendor co" -board "my board" -desc "my product desc"”命令进行数据烧写,该命令会将FT2232的通道A配置为JTAG,其余通道配置为UART,serial长度为6~12个字符(vivado扫描JTAG时显示的cable序列号,同一台PC能够同时连接多个不同序列号的cable仿真器)。图 2 program_ftdi的帮助信息。

luguodeyo的博客 1万+

ClojureCLR-Next:下一代ClojureCLR开发指南

ClojureCLR-Next:下一代ClojureCLR开发指南 项目介绍 ClojureCLR-Next 是ClojureCLR的下一代实现,目标在于重写并优化Clojure在.NET平台上的运行引擎。Clojure是一种动态的、通用编程语言,它结合了脚本语言的易用性和互动式开发特性,以及支持多线程编程的强大且稳健的基础架构。这个项目致力于提升Clojure在.NET环境下的表现力,增强其与...

gitblog_00579的博客 1100

Unity URP项目里Post Processing死活没效果?别慌,这5个坑我帮你踩过了

本文详细解析了Unity URP项目中Post Processing效果失效的五大常见问题,包括渲染管线配置冲突、Volume作用域误判、摄像机参数漏配、Layer层级冲突和Profile引用异常。通过实际项目案例和代码示例,提供专业级解决方案,帮助开发者快速排查并修复后处理效果不生效的问题。

weixin_33721427的博客 333

Clojure:所有正则表达式

最近 ,我一直在使用Clojure和Enlive抓取网页 ,作为其中的一部分,我不得不编写正则表达式来提取我感兴趣的数据。 在旅行中,我遇到了一些不同的功能,而且我不确定要使用哪个功能,因此我想我会记录一下为将来我所尝试的功能。 检查正则表达式是否匹配 我写的第一个正则表达式是在从Rec.Sport.Soccer Statistics Foundation废弃欧洲冠军联赛的结果时 ,...

276

SAP MRKO与MIRO的对比分析:为何寄售结算需要定制开发?

本文深入分析了SAP系统中MRKO与MIRO在寄售结算中的功能差异,揭示了标准MRKO在财务控制和业务流程上的局限性。通过定制开发实践,如BAdI增强和界面优化,企业可显著提升结算效率与准确性。文章还探讨了未来SAP S/4HANA在寄售结算中的智能化趋势,为相关企业提供技术参考。

weixin_29300241的博客 419

基于JavaFX的Http Server模拟器

源码地址 GitHub - DayRain/http-server-simulator: http server 模拟器 功能描述 HttpServer模拟器,通过简单的配置即可模拟第三方服务端,用于接收和响应HTTP请求。 支持同时模拟多个服务、动态添加接口、动态配置返回值。 使用说明 运行 exe运行 编译代码后,点击exe直接运行 代码运行 下载好代码后,运行主类ApplicationStarter即可 新建服务 主界面如下 点击 文件-新建 创建新的服务 ...

小楼夜听雨的博客 2534

Clojure笔记——“#”号用法总结

Clojure中的#可真是身兼多职,这里总结一下。 正则表达式 Clojure里面把以#开头的字符串当做正则表达式。 user=> (re-seq #"(\d+)-(\d+)" "1-3") ;= (["1-3" "1" "3"]) ``` * 注释 形式级别的注释#_宏。 ``` user=> (read-string "(+ 1 2 #_(* 2 2) 8)") ;=

Godric的杂记 1127

AI测试入门:如何测试AI对话模型/智能体?「详细介绍」

作为测试人员,我们需要掌握特定的技能和方法来有效地测试这些复杂的AI对话模型和智能体。传统的软件测试方法在这里可能不再完全适用,我们需要开发新的测试策略和技术来应对AI系统的独特特性。在这篇文章中,我们将深入探讨如何测试AI对话模型和智能体。

blues_C的博客 6855

Clojure语言的正则表达式

通过本文的介绍,相信你对Clojure语言中的正则表达式有了较为全面的了解。正则表达式是一种非常强大的工具,它能够帮助我们在字符串处理中丰富功能。在实际使用中,合理利用正则表达式,配合Clojure的其他特性,可以让我们的代码更加简洁高效。无论是数据验证、文本替换还是日志分析,正则表达式都能发挥其重要的作用。希望你在今后的编程中,通过实践掌握正则表达式的使用,提升解决问题的能力。

2501_90406591的博客 286

Vue2+OpenLayers动态绘制两个经纬度并计算距离(提供Gitee源码)

动态绘制两个经纬度并计算它们之间的距离。

黄团团的个人博客 365

11、AUTOSAR配置全解析:从运行实体到通信接口

本博客详细解析了在Simulink中使用AUTOSAR字典配置AUTOSAR运行实体(Runnables)、运行实体间变量(IRVs)、参数以及多种通信接口的过程。内容涵盖运行实体及其事件的配置、IRV和参数的属性设置,以及发送-接收接口、模式切换接口、客户端-服务器接口、非易失性数据接口、参数接口和触发接口的详细配置方法。通过这些步骤,开发者可以高效地构建符合AUTOSAR标准的汽车电子软件系统。

e3f4g5的博客 123

Clojure教程-基本语法

目录 1 简介 2 核心语法 3 代码功能 3.1 读取简繁字典 3.2 进行简繁翻译 3.3 读取不需要翻译的文字 3.4 过滤不翻译的文字 3.5 提供给Java调用 3.6 打包 4 源码 简介 学习一门语言最好的方法就是去使用它。我们就从一个小例子来学习 Clojure语法. 核心语法 首先先来看

PEAK 6567

【2026年华为暑期实习-非AI方向(通软&嵌软&测试&算法&数据科学)- 7月15日-第二题- 手机多载波冲突选择】(题目+思路+Java&C++&Python解析+在线测试)

摘要 本文提出了一种解决手机基站载波选择问题的回溯算法。给定N个载波,每个载波具有带宽和所属频段,要求选择最多K个载波,满足:1) 不选择同一频段的多个载波;2) 不选择冲突频段的载波;3) 总带宽最大化。算法通过预处理冲突关系,使用位掩码优化冲突检查,按编号顺序回溯枚举所有可能组合。当找到更大带宽或相同带宽但字典序更小的组合时更新答案。该方法在N≤25和K≤8的约束下高效可行,并通过样例验证了正确性。输出为最大总带宽和对应的最优载波编号序列。

m0_73659489的博客 71
上一篇: clojure-基本语法-字符串类型
下一篇: clojure-基本语法-函数定义
Dead_Knight
博客等级 码龄19年 6粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值