使用Regex拆分字符串,保留分隔符
Split String With Regex, Keep Seperator
这会根据需要拆分字符串,但不会保留分隔符:
"200 g Joghurt".split(/[0-9]?'s?[–|-]?'s?[0-9]+'s?g{0,1}'b/)
["", " Joghurt"]
我有这样的案例
- 100-200克
- 1g
- 240-1500克
这条线索建议用积极的眼光向前看。Javascript和regex:拆分字符串并保留分隔符
但如果我把它放进去,它会分裂成很多:
"200 g Joghurt".split(/(?=[0-9]?'s?[–|-]?'s?[0-9]+'s?g{0,1}'b)/)
["2", "0", "0 g Joghurt"]
问题:如何在数字和g后面拆分上面的字符串(数字可以是任何数字,Joghurt可以是任何单词)。例如
["200-400g", "joghurt"]
编辑:有些情况下我没有g,例如
- 1首歌曲
- 歌曲
- 迈克尔·杰克逊歌曲
所以仅仅和g匹配是行不通的。我在例子中放的格是带有g的格,g总是与一个数字或一系列数字组合在一起。很抱歉造成混乱。我想把菜谱上的配料分成配料和分量。g是克,也许这会使用例更加清晰。
编辑2:我也对它进行了一些修改,regex基本上可以工作,正如您在本例中看到的那样:https://regex101.com/r/rL7hY9/1但它并没有把它分割成一个整体。我在其他regex情况下也有这个问题,regex101上的匹配是整个组。但是.split()并没有将其拆分为一部分(具有积极的前瞻性)。
如果你总是有"g",你可以使用它,并将"g"重新添加到第一个数组元素中。这可能比试图创建一些庞大的RegEx更容易。如果它只需要RegEx,你可能想为"g"匹配一个带有负面外观的空格。Lookbehinds并非在所有RegEx引擎中都可用。
您可以使用此regex-(?!'s*g)'s
。我们匹配一个前面有"g"的空间:
alert("200 g Joghurt".split(/(?!'s*g)'s/))
好的,我找到了答案。我发布的第一个stackoverflow链接显示了积极的前景。但它比这更容易,您只需要将regex表达式放在括号中:
"200 g Joghurt".split(/([0-9]+'s?[–|-]?'s?[0-9]*'s?g{0,1}'b)/gi)
Javascript-string.split(regex)保留分隔符之后,我删除空字符串和空白。
我创建的另一个解决方法是:首先使用.match
,这样可以提供匹配的正则表达式,然后使用.split
,这样就去掉了正则表达式的部分。只有在没有global flag
的情况下,这才是容易的。
- 分派点击事件并保留击键修饰符
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- 提交后保留下拉选择的值
- 刷新后保留对网页的更改
- Javascript和RegEx:拆分并保留分隔符
- 使用Regex拆分字符串,保留分隔符
- 在 JavaScript 中拆分字符串,但保留分隔符 /
- JavaScript 拆分正则表达式保留分隔符
- 如何在使用 regexp.split 时保留分隔符
- 在 JavaScript 中用多个分隔符拆分公式字符串,并保留分隔符,然后将字符串重新组合在一起
- 拆分字符串,但保留拆分数组中的分隔符
- 将字符串拆分为单词并保留分隔符
- 拆分字符串并保留分隔符
- Javascript Regex进行了拆分,但保留了部分分隔符
- 用多个分隔符分隔字符串,保留它们并在双引号中忽略它们
- 用多个分隔符拆分javascript中的字符串并保留它们
- 分析已知键的字符串正则表达式,但保留分隔符
- 拆分字符串并在 javascript 加条件中保留分隔符
- Ember.js隐藏带有按钮的分隔符,但保留didInsertElement功能
- 分割字符串并保留分隔符