Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Regex,从结尾开始找匹配的_Javascript_Regex - Fatal编程技术网

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