空格上的正则表达式匹配 - 排除多组字符之间的空格
Regex match on whitespace - Exclude whitespaces between multiple sets of characters
>假设我得到了以下匹配:
在{这是一个测试}中插入"hello world"
我想匹配空格并将每个匹配项推送到我的字符串数组,因为我需要知道字符串中文本的索引。
这是棘手的部分;必须排除单引号 (') 和大括号 ({}) 内的空格
我想要的结果是:
- 插入
- "你好世界"
- 到
- {这是一个测试}
到目前为止,我已经能够排除单引号内的空格,但是我不知道如何将其与大括号组合在一起。
到目前为止,我的正则表达式:
''s(?=(?:[^']|'[^']')$)
这个很棘手。这次我想过匹配而不是拆分:
'[^']*'|'{[^'}]*'}|'S+
让我们解释一下:
'[^']*' # match a quoted string
| # or
'{[^'}]*'} # match zero or more characters between curly brackets
| # or
'S+ # match a non-white space character one or more times
在线演示
Niekert,复活这个问题,因为它有一个简单的解决方案,没有提到。这种情况听起来与匹配(或替换)模式非常相似,除了在 s1、s2、s3 等情况下。
这是我们的简单正则表达式:
{[^}]+}|( )
交替的左侧匹配完整的{ ... }
大括号。我们将忽略这些匹配。右侧匹配并捕获组 1 的空间,我们知道它们是正确的空间,因为它们与左侧的表达式不匹配。
该程序显示了如何使用正则表达式(请参阅在线演示窗格中的结果):
<script>
var subject = "insert 'hello world' into {This is a test}";
var regex = /{[^}]+}|( )/g;
var match = regex.exec(subject);
replaced = subject.replace(regex, function(m, group1) {
if (group1 == "" ) return m;
else return "SplitHere";
});
splits = replaced.split("SplitHere");
document.write("*** Splits ***<br>");
for (key in splits) document.write(splits[key],"<br>");
</script>
参考
如何匹配(或替换)模式,除非在 s1、s2、s3 的情况下...
相关文章:
- 仅当后面跟着字母表时才允许使用空格字符的验证
- 从 JavaScript 字符串中删除零宽度空格字符
- 正则表达式匹配非空格字符
- JSON 数据后出现意外的非空格字符
- JavaScript中(字符空间字符)或(空格字符空格)的表达式是什么
- /(S)1(1)+/g 匹配三个相等的非空格字符紧随其后的所有匹配项
- Javascript RegExp:如何检测空格字符
- 在预标记中显示空格字符
- 检查数组中的字符串在javascript/jquery中是否有空格字符
- JavaScript初学者:在函数中编码单独的空格字符有什么功能区别
- 在javascript和crossfilter中使用空格字符
- 获取第一个空格字符和'='性格
- 在JavaScript中,当使用Regex时,如何在不使用空格字符ORs的情况下匹配空格
- 使用jQuery将cookie值替换为空格字符
- Javascript regex:查找一个没有后跟空格字符的单词
- Regex检查重复的空格字符
- 如何检查输入是否只包含空格字符?即只有一个或多个空格,而没有其他字符
- 替换unicode空格字符
- 在regex - Javascript中,在匹配空格字符之前先匹配字母
- 我如何添加空格字符的文本在jquery追加