我如何匹配每个单词的第一个字母,除了花括号中的单词与正则表达式
How can I match first letter of every word except words in braces with Regex
我一直在尝试这样做。我可以匹配每个单词的第一个字母,但是不能排除用大括号括起来的单词。
例如:我做不到,请帮助我。
所以这应该匹配- I
, c
, t
, p
, m
- only。
使用'b'w
只匹配单词的首字母,不排除大括号中的单词。我也试过消极的向前看,但似乎我不能正确地做:
(?!'(()'))'b'w
我也有unicode的问题。使用(?:^| )[a-z]{1}
或'b'w
只匹配拉丁字母,有时会有不同的unicode,例如:
我是(某人)。
在这种情况下,regex将只匹配I
, a
和s
,而不是ვ
。由于
这个只捕获单词的第一个字母:
(& lt; = [^ () ' b ' w
这是一个积极的回顾:(来自https://regex101.com/)
确保给定的模式匹配,并在表达式中的当前位置结束。不占用任何字符。
/(& lt; = foo)酒吧/
foobar匹配Foobaz不匹配
对于非拉丁字符,i无法帮助您
不同的东西需要考虑。
-
首先你需要定义你的字母,也可以是非拉丁字母。请看下面的回答和评论。因此,为了匹配字母,我们使用
['u00C0-'u1FFF'u2C00-'uD7FF'w]
-
当你想在Javascript中这样做时,regex是有限的。不能使用字边界
'b
,因为它与指定的字母范围不匹配。向后看不可用。我们需要使用指定字母的否定类。像(?:^|[^''u00C0-'u1FFF'u2C00-'uD7FF'w-])
这样的"词边界"。这里我还添加了'
,以避免匹配,如can't
-
使用预先检查来检查是否在括号外:
(?![^(]*'))
整个模式看起来就像
(?:^|[^''u00C0-'u1FFF'u2C00-'uD7FF'w])(['u00C0-'u1FFF'u2C00-'uD7FF'w])(?![^(]*'))
在regex101
相关文章:
- 用于匹配不带字符的单词的正则表达式
- 在正则表达式中搜索单词
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- 正则表达式用于在javascript中存储单词之前和之后
- 只使用正则表达式匹配单词后面的所有内容
- 用特定的javascript正则表达式替换每个单词
- 正则表达式以更改字符串中的某些单词
- 匹配给定的正则表达式,除非存在给定的单词(lookahead或lookbacking)
- 如何通过JavaScript正则表达式匹配不同语言中的单词
- Javascript 正则表达式在特定单词或数字之后拆分
- 短语中类似单词的正则表达式交替
- 与冒号(不包括冒号)之间的正则表达式单词匹配
- 连续重复的单词以使用正则表达式进行更改
- 用于匹配带空格和不带空格的多个单词的正则表达式
- 如何使用正则表达式 JavaScript 替换具有特定单词的整行
- 使用正则表达式获取多个单词,单词之间留有空格
- 一个具有精确pettern的单词的正则表达式
- JS正则表达式匹配单词,包括用空格括起来的单词
- 使用 JavaScript 正则表达式获取所有没有 HTML 标签的单词
- 在javascript中查找特定单词(正则表达式)中的字符类型