Javascript Regex,从结尾开始找匹配的
我有这样的文字: 一些人写道:一些内容 或 有人说:有些内容 我想把所有的内容从“写”到结尾 看起来很简单:Javascript Regex,从结尾开始找匹配的,javascript,regex,Javascript,Regex,我有这样的文字: 一些人写道:一些内容 或 有人说:有些内容 我想把所有的内容从“写”到结尾 看起来很简单:(said | writes):* 但是。我的文本示例可以如下所示: 有人写:布拉布拉,说:一些内容 在这里我只想得到“说:一些内容”。 但是我的正则表达式从“写入”到最后都会获取所有内容。 如何解决此问题?您可以使用正则表达式:^.*(\b\w+:*)$ 正则表达式捕获模式为“”:$” 我认为,如果不定义字符串的拆分方式,就不可能使用RegExp进行拆分。您确实应该巩固字符串的模式并强制
(said | writes):*代码>
但是。我的文本示例可以如下所示:
有人写:布拉布拉,说:一些内容
在这里我只想得到“说:一些内容”。
但是我的正则表达式从“写入”到最后都会获取所有内容。
如何解决此问题?您可以使用正则表达式:^.*(\b\w+:*)$
正则表达式捕获模式为“”:$”
我认为,如果不定义字符串的拆分方式,就不可能使用RegExp进行拆分。您确实应该巩固字符串的模式并强制使用它,但这里有一种编程方式来解析字符串
constwrites='someguy编写:一些内容。'
const said='有人说:有些内容。'
const blah='有些人写:blabla,说:一些内容'
函数objectifyString(str){
const reg=/(说|写):/
常量索引=str.search(reg)| 0
const parts=str.substring(index).split(reg).filter(item=>item.length)
常量obj={}
常数ll=零件长度
设ii=0
对于(;ii )
用^.*
在您的正则表达式前面加上前缀并捕获它:
见
首字母*
将抓住整行(如果使用了DOTALL修饰符,则为字符串),并将回溯以适应字符串/行上最后一行的所说的:
或写入:
(?:said | writes)
中的非捕获组仅用于分组目的,因此只有一个ID=1的捕获组
详细信息:
^
-字符串/线锚的开始(取决于使用的修饰符)
*
-尽可能多的任何0+字符(因为*
是贪婪的量词)(如果未使用DOTALL修饰符,则换行符号除外)
((?:said | writes):.*)
-第1组捕获:
(?:said | writes)
-要么said
要么writes
字符序列
:
-冒号
*
-行/字符串末尾之前的任何0+字符(如果未使用DOTALL修饰符,则换行符号除外)
以下是您的答案:
var text = "Some guy writes: blablabla, said: some content";
var output = /.*\s(\w+:.*)/.exec(text);
// output[1] contains your answer
请发布您尝试过的代码。@SibeeshVenu:它在那里,并标记为代码。(虽然结尾有一个不应该的空格。)我认为你不需要所有的^.*
见我的回答,你的捕获组至少是“不寻常的”。除此之外,你的回答总是很好的you@Fallenhero:这里我只想得到“说:一些内容”。不是我设定了这样的要求。这看起来是正确的答案,但我如何才能在JavaScript中仅获得\1
替换?是的,代码生成器部分有一些代码示例。$1
是您需要的反向参考。在JS中,替换的反向引用语法是$
+组ID。我的文本不仅可以用逗号分割,还可以是空格或任何其他符号
var text = "Some guy writes: blablabla, said: some content";
var output = /.*\s(\w+:.*)/.exec(text);
// output[1] contains your answer