首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

regexp用逗号和空格分割字符串,但忽略带连字符的单词?

在正则表达式中,可以使用字符集(character class)来匹配特定的字符。为了忽略带连字符的单词,可以使用以下正则表达式:

代码语言:txt
复制
(?<=\s|^)[^\s-]+(?:-[^\s-]+)*(?=\s|$)

这个正则表达式的含义是:

  • (?<=\s|^):匹配空格或字符串开头,但不包括空格和字符串开头在内。
  • [^\s-]+:匹配一个或多个非空格和非连字符的字符。
  • (?:-[^\s-]+)*:匹配零个或多个以连字符开头的非空格和非连字符的字符序列。
  • (?=\s|$):匹配空格或字符串结尾,但不包括空格和字符串结尾在内。

这个正则表达式可以匹配一个或多个单词,其中单词可以包含连字符,但不会将连字符前后的字符分开。例如,对于字符串 "hello-world this is a test-string",这个正则表达式会匹配 "hello-world"、"this"、"is"、"a"、"test-string" 这五个单词。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

正则表达式必知必会 - 位置匹配

简单地说,\b 匹配字符之间一个位置:一边是单词(能够被 \w 匹配字母数字字符下划线),另一边是其他内容(能够被 \W 匹配字符)。... \bcat\b 匹配到字符串长度是 3 个字符(c、a、t),不是 5 个字符。如果不想匹配单词边界,那么可以使用 \B。下面的例子使用 \B 来查找前后都有多余空格字符。...nine-digit pass-key 中字符不能与之匹配, color - coded 中字符可以与之匹配,因为空格字符都不属于\w。...只有当它出现在字符集合里,即位于 [ ] 之间,且紧跟在左方括号后面时,它才表示排除该字符集合。如果出现在字符集合之外并位于模式开头,^ 将匹配字符串起始位置。...,所以 ^\s* 匹配字符串开头随后零个或多个空白字符,这解决了<?

16030

如果当时学会了这7个高频正则表达式,我面试一定不会输!

也就是说某些字符X之后一定也是跟着X,就叫连续重复。如果很明确知道X就是1,那么/11+/也就可以匹配了,关键是这里X是不明确,怎么办呢?。 使用反向引用正则知识可以很方便解决这个问题。...实现一个trim函数 老生常谈题了,这里我们两种思路实现 去除字符串首尾空格 正则结果 // 去除空格法 const trim = (str) => { return str.replace(...数字价格千分位分割 将123456789变成123,456,789 这道题估计大家在面试工作中也经常遇到,出现频率比较高。 正则结果 '123456789'.replace(/(?!^)(?...将字符串驼峰化 如下规则,将对应字符串变成驼峰写法 1. foo Bar => fooBar 2. foo-bar---- => fooBar 3. foo_bar__ => fooBar 正则结果...,单词前面可能是开头也可能是多个空格

74110
  • 正则表达式 - 匹配 Unicode 其他字符

    单词首字母大写其他小写         可以 \w+ 匹配英语单词,然后用在循环 regexp_substr 依次取单词,并将单词首字母转大写,单词其他字母转小写,非单词字符原样返回。...需求是这样,将单词首字母转大写,其他字母转小写,以点号 ....匹配点号结尾单词拼接上一个标识字符串,这里是 char(0)加上字符 a 。...前面说过 regexp_replace 第三个参数中函数会在正则表达式匹配前执行, concat 函数是个例外,它会拼接到匹配字符串上,如: mysql> select initcap(regexp_replace...遇到中英文混排、全角、半角字符同时出现情况,看可以 \p{Z} 匹配所有的空白字符(而不用关心空格到底是全角空格还是半角空格), \p{P} 匹配所有的标点字符(而不用关心逗号到底是中文逗号还是英文逗号

    2.8K110

    【建议收藏】25+正则面试题详尽解析,让你轻松通过正则面试,让你少写2000行代码

    验证密码合法性 ❝密码长度是6-12位,由数字、小写字母大写字母组成,必须至少包括2种字符 ❞ 正则结果 let reg = /((?=.*\d)((?=.*[a-z])|(?=....」 必须包含两种字符,有下面四种排列组合方式 数字小写字母组合 数字大写字母组合 小写字母与大写字母组合 数字、小写字母、大写字母一起组合(其实前面三种已经覆盖了第四种了) // 表示条件12...实现一个trim函数 ❝去除字符串首尾空格 ❞ 正则结果 // 去除空格法 const trim = (str) => { return str.replace(/^\s*|\s*$/g, '')...,单词前面可能是开头也可能是多个空格。...英文单词加前后空格 ❝字母汉字组成字符串正则给英文单词加前后空格

    72240

    笔记·正则表达式re库

    请注意在逗号两个数之间不能有空格。 定位符 定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样正则表达式,这些正则表达式出现在一个单词内、在一个单词开头或者一个单词结尾。...例如,zo*能匹配 “z” 以及 “zoo”) 匹配字边界稍有不同,向正则表达式添加了很重要能力。字边界是单词空格之间位置。非字边界是任何其他位置。...模式”.”可以匹配任何字符串,除了空串只包括一个”新行”字符串。 确定重复出现 到现在为止,你已经知道如何去匹配一个字母或数字,更多情况下,可能要匹配一个单词或一组数字。...一个数字,{x}意思是”前面的字符字符簇只出现x次”;一个数字加逗号,{x,}意思是”前面的内容出现x或更多次数”;两个逗号分隔数字,{x,y}表示”前面的内容至少出现x次,但不超过y次”。...,正则表达式试试: >>> re.split(r'\s+', 'a b c') ['a', 'b', 'c'] 无论多少个空格都可以正常分割

    1K30

    正则表达式

    ^ 匹配输入字符串开始位置。如果设置了RegExp对象Multiline属性,^也匹配“\n”或“\r”之后位置。 $ 匹配输入字符串结束位置。...请注意在逗号两个数之间不能有空格。 ? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪。...例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内任意字符。 \b 匹配一个单词边界,也就是指单词空格位置。...请注意在逗号两个数之间不能有空格。 ? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪。...例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内任意字符。 \b 匹配一个单词边界,也就是指单词空格位置。

    45850

    Java字符串分割方法split()功能以及使用方法详细介绍!

    一个例子来说明它功能:将字符串“no pains,no gains!”解析成含有4个单词字符串数组。...思想:首相要考虑清楚将字符串按什么条件进行分割,在本题中有空格,但是仅仅按照空格分割结为:“no”“pains,no”“gains!”这并不是目标效果。...所以应该将该字符串空格逗号、感叹号进行分割从而得到“no”“pains”“no”“gains”效果。...二、使用方法以及注意事项 在使用方面,由于要按照多个条件进行分割,所以需要使用“|”作为字符,而split()方法返回值是一个字符型数组,所以使用语句为:String []a=test.split...(” |”);(其中test为要分割字符串,a字符型数组为分割后结果存储位置)。

    84420

    正则表达式 - 边界

    regexp_replace(a,'\\bthe\\b','') 将原字符串 the 单词替换掉, \b 确定单词边界。regexp_replace函数缺省不区分大小写。...字符串长度减去替换掉 the 后字符串长度,再除以 the 这个单词长度,结果即为 the 出现次数。...\s 匹配一个空白字符,包括空格、制表符、换页符换行符;+ 匹配前面一个字符重复一次或更多次; 匹配字符串结束。多行空行即为以空格开头开头,中间重复多个空格或换行符,再加此字符串结束一串字符。...2 rows in set (0.00 sec) 五、使用元字符字面值         可以 \Q \E 之间字符集匹配字符串字面值。为了展示这一点,考虑如下字符串: .^$*+?...在尝试匹配这些字符时,可能被MySQL判定为非法正则表达式,如果放在 \Q \E 之间则会匹配字面值,因为\Q\E之间任意字符都会被解释为普通字符。当然也可以只用转义匹配字面值。

    2.5K10

    正则表达式30分钟入门教程

    字符是计算机软件处理文字时最基本单位,可能是字母,数字,标点符号,空格,换行符,汉字等等。字符串是0个或更多个字符序列。文本也就是文字,字符串。...正则表达式引擎通常会提供一个“测试指定字符串是否匹配一个正则表达式”方法,如JavaScript里RegExp.test()方法。这里匹配是指是字符串里有没有符合表达式规则部分。...如果不使用^$的话,对于\d{5,12}而言,使用这样方法就只能保证字符串里包含5到12续位数字,而不是整个字符串就是5到12位数字。 字符转义 如果你想查找元字符本身的话,比如你查找 ....\d{8}这个表达式匹配3位区号电话号码,其中区号可以小括号括起来,也可以不用,区号与本地号间可以连字号或空格间隔,也可以没有间隔。你可以试试用分枝条件把这个表达式扩展成也支持4位区号。...假如你想要给一个很长数字中每三位间加一个逗号(当然是从右边加起了),你可以这样查找需要在前面里面添加逗号部分: ((?

    96130

    JavaScript刷LeetCode-字符串类解题技巧_2023-02-27

    字符串 翻转字符串单词 给定一个字符串,你需要反转字符串中每个单词字符顺序,同时仍保留空格单词初始顺序。...示例 1: 输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外空格...步骤一:先把句子分隔开,分割开后塞入数组里,数组先后顺序就是单词先后顺序。 步骤二:然后把数组每个单词进行反转。...注意:这不是一个比较好解法,如果单词中包含逗号,圆括号等,正则尾部会匹配到,输出答案就会不理想。...s,计算具有相同数量01非空(连续)子字符串数量,并且这些子字符串所有0所有1都是组合在一起

    28820

    正则表达式 - 简单模式匹配

    匹配单词与非单词字符         \w 简写式将匹配所有的单词字符,\D 与 \w 区别是 \D 会匹配空格、标点符号(引号、字符、反斜杠、方括号)等字符,而 \w 只匹配字母、数字下划线。...在英语环境中,与 \w 匹配相同内容字符组为:[_a-zA-Z0-9]         \W 匹配非单词字符,匹配空格、标点以及其他非字母、非数字字符。...要匹配THE RIME整个短语,则可使用八个点号,推荐用量词 .{8}         这个表达式就能匹配前两个单词以及它们之间空格只是粗略地匹配。...简写式 \b 匹配单词边界,不消耗任何字符字符 A T 限定了字符序列首尾字母;.{5} 匹配任意五个字符;简写式 \b 匹配单词另一个边界。        ...多行模式(multi-line mode)使得 ^ $ 匹配到每行字符串开头结尾处。测试数据加以说明,需求是给 T 或 t 开头行首尾分别加 HTML 标记 与 。

    78810

    - Python中不同数据类型间转换

    split() 函数 用法:string.split(sep=Node, maxsplit=-1) ;sep : 为作为切割识别的规则符号,不填写情况下默认切割规则符号为空格;如果字符串不存在空格...['My', 'name', 'is', 'Neo']# >>> 可以看到已经将 'name' 以空格为切割规则符号切割成了每个单词为一个元素列表test_int = '1, 2, 3,...test_int.split(',')print(test_int_list)# 执行结果如下:# >>> ['1', ' 2', ' 3', ' 4']# >>> 可以看到已经将 'test_int' 以逗号为切割规则符号切割成了每个单词为一个元素列表...join() 函数 用法:'sep'.join(iterable) ;sep:生成字符串用来分割列表每个元素符号iterable:非数字类型列表或元组或集合join() 函数 返回值为一个字符串需要注意是...也可以认为它是一种特殊字符串,因为它长得字符串几乎一模一样,同时也拥有字符串几乎所有的内置函数。我们完全可以像操作字符串一样操作 比特类型 (bytes),只不过字符串前需要加上 b 标识。

    11111

    正则表达式

    即相当于多种编程语言中都有的“转义字符概念。 ^ 匹配输入字符串开始位置。如果设置了RegExp对象Multiline属性,^也匹配“\n”或“\r”之后位置。...$ 匹配输入字符串结束位置。如果设置了RegExp对象Multiline属性,$也匹配“\n”或“\r”之前位置。 * 匹配前面的子表达式任意次。...例如,“o{1,3}”将匹配“fooooood”中前三个o为一组,后三个o为一组。“o{0,1}”等价于“o?”。请注意在逗号两个数之间不能有空格。 ?...\b 匹配一个单词边界,也就是指单词空格位置(即正则表达式“匹配”有两种概念,一种是匹配字符,一种是匹配位置,这里\b就是匹配位置)。...等价于\x09\cI。 \v 匹配一个垂直制表符。等价于\x0b\cK。 \w 匹配包括下划线任何单词字符

    20820

    就因为这三个知识点,我彻底学废了”正则表达式“

    6-12位,由数字、小写字符大写字母组成,必须至少包括2种字符 这些题时常出现在面试中,日常业务也少不了它身影。...image.png 咱们可以字符串进行类比, 字符首尾、间隙都可以字符串进行连接。...密码长度是6-12位,由数字、小写字符大写字母组成,必须至少包括2种字符 题目由三个条件组成 ① 密码长度是6-12位 ② 由数字、小写字符大写字母组成 ③ 必须至少包括2种字符 第一步写出条件...字符串匹配原来这么简单 两种模糊匹配 正则如果只有精确匹配,那么便完全没有了意义 横向 一个正则可匹配字符串长度不是固定,可以是多种情况,通过量词+、*、?...去掉开头结尾字符 const trim2 = (str) => { return str.replace(/^\s*|\s*$/g, '') } 2.将每个单词首字母大写 关键是要找到每个单词首字母

    2K20

    可能是最好正则表达式教程笔记

    总结 []作用,英文表达就是"alternation",表达一个或逻辑; /[-.(]/ 在符号中字符-放在第一位表示字符本身,如果放在中间,表示"从..到.."...undefined] 1.4.4. str.split 现在来到了更强功能上,先说下split,我们知道split是将字符串按照某个字符分隔开,比如有以下一段话,需要将其分割单词。...var s = "unicorns and rainbows And, Cupcakes" 分割单词,首先想到空格隔开,于是可以下面方式实现 var result = s.split(' ');...我们并不是想让它分割依据是逗号或者空格,依据应该是逗号空格所在连续序列。...match比较特殊,如果正则包含了分组,且没有g标志,则返回匹配内容分组; 如果没有分组,且有g标志,返回所有匹配内容 split方法主要用于字符串分割,如果想要保存分隔符,记得将匹配内容分组(小括号包起来

    1.5K10

    JavaScript刷LeetCode-字符串类解题技巧

    字符串翻转字符串单词给定一个字符串,你需要反转字符串中每个单词字符顺序,同时仍保留空格单词初始顺序。...示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc"注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外空格...步骤一:先把句子分隔开,分割开后塞入数组里,数组先后顺序就是单词先后顺序。 步骤二:然后把数组每个单词进行反转。...注意:这不是一个比较好解法,如果单词中包含逗号,圆括号等,正则尾部会匹配到,输出答案就会不理想。...s,计算具有相同数量01非空(连续)子字符串数量,并且这些子字符串所有0所有1都是组合在一起

    38110

    JavaScript刷LeetCode-字符串类解题技巧4

    字符串翻转字符串单词给定一个字符串,你需要反转字符串中每个单词字符顺序,同时仍保留空格单词初始顺序。...示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc"注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外空格...步骤一:先把句子分隔开,分割开后塞入数组里,数组先后顺序就是单词先后顺序。 步骤二:然后把数组每个单词进行反转。...注意:这不是一个比较好解法,如果单词中包含逗号,圆括号等,正则尾部会匹配到,输出答案就会不理想。...s,计算具有相同数量01非空(连续)子字符串数量,并且这些子字符串所有0所有1都是组合在一起

    36630

    Jst刷LeetCode--字符串类解题技巧

    字符串翻转字符串单词给定一个字符串,你需要反转字符串中每个单词字符顺序,同时仍保留空格单词初始顺序。...示例 1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc"注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外空格...步骤一:先把句子分隔开,分割开后塞入数组里,数组先后顺序就是单词先后顺序。 步骤二:然后把数组每个单词进行反转。...注意:这不是一个比较好解法,如果单词中包含逗号,圆括号等,正则尾部会匹配到,输出答案就会不理想。...s,计算具有相同数量01非空(连续)子字符串数量,并且这些子字符串所有0所有1都是组合在一起

    30240

    「思维导图学前端 」初中级前端值得收藏正则表达式知识点扫盲

    但是有时候我们并不希望这样字符串'Iloveyou'被匹配,因为它没有单词空格。 所以\b有了它存在意义。...有的人可能会说,那我可以空格匹配啊。 'I love you'.match(/ love /) 空格\b在这种场景下还是有一点不一样,这体现在match结果上。...如果是空格匹配,那么match结果数组中第一项就是" love ",是带了空格,然而很多时候我们不希望在结果中得到空格,所以\b存在意义也就比较明显了。 \B 与\b相反,代表非单词边界。...比如,我要匹配一个字符串,要求符合这样规则: 字符串由单引号或双引号开头结束,中间内容可以是数字,单词。...假设我们得到这样一个不太规律字符串"1,2, 3 ,4, 5",然后需要分割这个字符串得到纯数字组成数组,直接使用split(",")是不行,而利用正则表达式作为分割条件就可以做到。

    45040
    领券