当前位置: 首页 > 知识库问答 >
问题:

Javascript和正则表达式:拆分字符串并保留分隔符

汝天宇
2023-03-14

我有一个字符串:

var string = "aaaaaa<br />&dagger; bbbb<br />&Dagger; cccc"

我想用分隔符< code >分割这个字符串

为此,我使用以下方法:

string.split(/<br \/>&#?[a-zA-Z0-9]+;/g);

我得到了我需要的东西,除了我失去了分隔符。下面是示例:http://jsfiddle.net/JwrZ6/1/

如何保留分隔符?

共有3个答案

孔深
2023-03-14

如果将分隔符包装在 paranpoints 中,它将成为返回数组的一部分。

string.split(/(<br \/>&#?[a-zA-Z0-9]+);/g);
// returns ["aaaaaa", "<br />&dagger;", "bbbb", "<br />&Dagger;", "cccc"]

根据您要保留的部分,更改您匹配的子组

string.split(/(<br \/>)&#?[a-zA-Z0-9]+;/g);
// returns ["aaaaaa", "<br />", "bbbb", "<br />", "cccc"]

您可以通过忽略字母字符串.split(/() 的大小写来改进表达式

您可以像这样匹配预定义的组:< code>\d等于< code>[0-9],而< code>\w等于< code>[a-zA-Z0-9_]。这意味着你的表达式可能是这样的。

string.split(/<br \/>(&#?[a-z\d]+;)/gi);

JavaScriptKit上有很好的正则表达式参考。

端木明贤
2023-03-14

使用(正)前瞻,以便正则表达式断言特殊字符存在,但实际上并不匹配它:

string.split(/<br \/>(?=&#?[a-zA-Z0-9]+;)/g);

观看它的实际应用:

var string = "aaaaaa<br />&dagger; bbbb<br />&Dagger; cccc";
console.log(string.split(/<br \/>(?=&#?[a-zA-Z0-9]+;)/g));
郝原
2023-03-14

我遇到了类似但略有不同的问题。无论如何,这里有三种不同场景的示例,说明在哪里存放脱敏器。

"1、2、3".split("、") == ["1", "2", "3"]
"1、2、3".split(/(、)/g) == ["1", "、", "2", "、", "3"]
"1、2、3".split(/(?=、)/g) == ["1", "、2", "、3"]
"1、2、3".split(/(?!、)/g) == ["1、", "2、", "3"]
"1、2、3".split(/(.*?、)/g) == ["", "1、", "", "2、", "3"]

警告:第四个只能拆分单个字符。Connor sfan提出了另一种选择:

// Split a path, but keep the slashes that follow directories
var str = 'Animation/rawr/javascript.js';
var tokens = str.match(/[^\/]+\/?|\//g);
 类似资料:
  • 使用JavaScript,我试图使用正则表达式将段落拆分为句子。我的正则表达式不考虑括号内的句子,我希望保留分隔符。 我在这里放了一个代码示例 jsFiddle.net

  • 问题内容: 我有一个字符串: 我想用分隔符和一个特殊字符分隔此字符串。 为此,我正在使用: 如何保留定界符? 问题答案: 使用(正)前瞻,以便正则表达式断言特殊字符存在,但实际上并不与之匹配: 实际观看:

  • 我试图匹配正则表达式模式来替换特定字符串。 示例文本:ABC/1111111 031111111/0318*12345678 我想用“/1222”替换03和18 in/0318,即(2022年12月)。我尝试了string replaceAll方法,但它替换了提供的示例字符串中所有匹配的字符。比如下面; 我尝试过的示例代码: 样本文本。替换(匹配器组(2),“12”); 样本文本。替换(匹配器组(

  • 问题内容: 我有一个字符串,需要根据出现的“,”(逗号)进行拆分,但是需要忽略在一对括号内出现的任何字符串。例如, 应拆分为 问题答案: 对于非嵌套 嵌套 (括号内的括号)

  • 我有一个表格形式的命令输出。我正在解析结果文件的输出并将其存储在字符串中。一行中的每个元素由一个或多个空格字符分隔,因此我使用正则表达式匹配1个或多个空格并拆分它。但是,在每个元素之间插入一个空格: 还有更好的方法吗? 每次拆分后,str2都会附加到列表中。

  • 问题内容: 我有以下显示这种格式的文件名: 我想提取第二个下划线之后和之前的中间两个时间戳部分。因此,我使用了以下Python正则表达式字符串拆分: 但这在返回的列表中给了我两个额外的空字符串: 如何仅获取两个时间戳信息?即我想要: 问题答案: 不要使用,使用正则表达式/对象的方法。 您甚至可以命名捕获组并在字典中检索它们,尽管您使用的不是。(这种情况下的regex模式将类似于)