相关疑难解决方法(0)

按空格拆分字符串,忽略嵌套字符串中的空格

目前,我可以拆分这样的字符串:

"1 2 3".split(' ') // [ "1", "2", "3" ]
"1 2 3 'word'".split(' ') // [ "1", "2", "3", "'word'" ]
Run Code Online (Sandbox Code Playgroud)

有没有办法避免在嵌套字符串中的空格上拆分?

例如:

"1 2 3 'word one'".split(' ') // want output of [ "1", "2", "3", "'word one'" ]
"1 2 3 \"word one\"".split(' ') // want output of [ "1", "2", "3", "\"word one\"" ]
Run Code Online (Sandbox Code Playgroud)

我想要输出[ "1", "2", "3", "'word one'" ]而不是[ "1", "2", "3", "'word", "one'" ](即如果它们在字符串中我想忽略空格).

javascript

3
推荐指数
2
解决办法
83
查看次数

正则表达式查找所有匹配项

我需要一个正则表达式来查找我的模式的所有匹配项。

文本是这样的:

"someother text !style_delete [company code : 43ev4] between text !style_delete [organiztion : 0asj9] end of line text"
Run Code Online (Sandbox Code Playgroud)

我想找到该模式的所有匹配项:

!style_delete [.*]
Run Code Online (Sandbox Code Playgroud)

我已经这样尝试过:

Pattern pattern = Pattern.compile("!style_delete\\s*\\[.*\\]");
Run Code Online (Sandbox Code Playgroud)

与此匹配的文本是这样的:

!style_delete [company code : 43ev4] between text !style_delete [organiztion : 0asj9]
Run Code Online (Sandbox Code Playgroud)

但我期望如下:

match 1 : !style_delete [company code : 43ev4] 
match 2 : !style_delete [organiztion : 0asj9]
Run Code Online (Sandbox Code Playgroud)

请帮帮我,java中的正则表达式将如何获得上述输出。

java regex

2
推荐指数
2
解决办法
2万
查看次数

为什么这个正则表达式匹配得太多了?(不要停在斜线上)

此代码输出$captured数组,但$captured[1]包含bar/this而不是我的预期bar.我的正则表达式中缺少什么来阻止返回bar

<?php

    $pattern = '/foo/:any/';
    $subject = '/foo/bar/this/that';

    $pattern = str_replace(':any', '(.+)', $pattern);
    $pattern = str_replace(':num', '([0-9]+)', $pattern);
    $pattern = str_replace(':alpha', '([A-Za-z]+)', $pattern);

    echo '<pre>';

    $pattern = '#^' . $pattern . '#';
    preg_match($pattern, $subject, $captured);

    print_r($captured);
    echo '</pre>';
Run Code Online (Sandbox Code Playgroud)

php regex

1
推荐指数
1
解决办法
821
查看次数

如何获得第一次出现?正则表达式蟒蛇

我有这个 html 标签:

x=""" <div>ad</div>  \n\n <div> correct value  </div>  <div> wrong value </div>   """
Run Code Online (Sandbox Code Playgroud)

我想得到 corret value

所以我搜索这个词ad</div>然后是任何东西,直到另一个<div>然后获取所有值,直到</div>

我使用这个代码:

re.findall(r'ad</div>.*<div>(.*)</div>',x,re.S)
Run Code Online (Sandbox Code Playgroud)

我使用 falg re.S 因为我希望点也匹配新行。我不知道 div 之间有多少行。所以我使用 .* !

我认为 findall 应该返回correct value,但它返回 wrong value。为什么 ?它搜索最后一个div而不是第一个?

python regex python-2.7

1
推荐指数
1
解决办法
6840
查看次数

在两个字符串之间匹配字符串

如果我有这样的字符串:

var str = "play the Ukulele in Lebanon. play the Guitar in Lebanon.";
Run Code Online (Sandbox Code Playgroud)

我想得到每个子串"play"和"in"之间的字符串,所以基本上是一个带有"Ukelele"和"Guitar"的数组.

现在我正在做:

var test = str.match("play(.*)in");
Run Code Online (Sandbox Code Playgroud)

但是在第一个"游戏"和最后一个"在"之间返回字符串,所以我得到了"在黎巴嫩的尤克里里琴.弹吉他"而不是两个单独的字符串.有没有人知道如何全局搜索字符串以查找起始字符串和结束字符串之间的所有子字符串?

javascript regex string string-matching

1
推荐指数
1
解决办法
9982
查看次数

在我想要实际匹配之后停止匹配*所有*的正则表达式!

我对整个正则表达式的事情都很陌生并试图preg_match_all在PHP中做一个我想要的结果,但问题是它我真正想要之后匹配所有内容......就像这样:

字符串:This is something <code>Some code here</code> and more 来自正则表达式的<code>Some code here</code> and more 匹配:来自正则表达式的通缉比赛:<code>Some code here</code>

这是我正在使用的正则表达式: /<code>(.*)<\/code>/

我认为这与开始和结束/分隔符有关,但我不完全确定.

任何帮助将不胜感激,谢谢!

php regex preg-match-all

0
推荐指数
1
解决办法
2882
查看次数

C++正则表达式搜索多行注释(在/**/之间)

我正在尝试实现简单的情况(基本上在两个标签之间找到文本,无论它们是什么).我想要排队

/*我的评论1*/

/*我的评论2*/

/*我的评论3*/

作为输出.看来我需要将捕获组限制为1?因为在字符串上Hello /* my comment 1 */ world我得到了我想要的东西 - res [0]包含/*我的评论1*/

#include <iostream>
#include <string>
#include <regex>

int main(int argc, const char * argv[])
{
    std::string str = "Hello /* my comment 1 */ world /* my comment 2 */ of /* my comment 3 */ cpp";

    std::cmatch res;
    std::regex rx("/\\*(.*)\\*/");

    std::regex_search(str.c_str(), res, rx);

    for (int i = 0; i < sizeof(res) / sizeof(res[0]); i++) {
        std::cout << res[i] << std::endl;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ regex

0
推荐指数
1
解决办法
4949
查看次数

Python:在第一次出现两个子串之间找到一个字符串

我有这样的文字:

text='gn="right" headers="gr-Y10 gr-eps i36">121.11<\\/td><\\/tr><tr class="hr"><td colspan="12"><\\/td><\\/tr><tr>'
Run Code Online (Sandbox Code Playgroud)

我想从中121.11使用正则表达式来获取值.所以我这样做了:

import re
b=re.search('gr-Y10 gr-eps i36">(.*)<\\\\/td', text)
b.group(1)
Run Code Online (Sandbox Code Playgroud)

我把它作为输出:

'121.11<\\/td><\\/tr><tr class="hr"><td colspan="12">'
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到我真正想要的东西,而121.11不是上面的那一行?

python regex python-2.7

0
推荐指数
2
解决办法
1203
查看次数

在多行中首次出现时结束正则表达式模式

你好有这个字符串

  <20170503-18:19:09, FIXT.1.1:BANZAI->EXEC, event> (Initiated logon request)
  <20170503-18:19:09, FIX.4.4:BANZAI->EXEC, incoming> (8=FIX.4.4?9=67?35=A?
  34=177?49=EXEC?52=20170503-18:19:09.298?56=BANZAI?98=0?108=30?10=092?)
  <20170503-18:19:09, FIX.4.4:BANZAI->EXEC, event> 
  (Received logon) fdsfhffghgfhgjgf  177?49=EXEC?52=20170503-18:19:09.298?
  56=BANZAI?98 (Received logon) more stuff after this....
Run Code Online (Sandbox Code Playgroud)

我想查找关键字“ Initiated logon request”之后是否有以下响应“ Received logon”,当我编写这样的正则表达式模式以适应多行和介于两者之间的任何字符时

 Initiated logon request.*[\S\s]*Received logon 
Run Code Online (Sandbox Code Playgroud)

我把所有东西都放在字符串结果中的最后一个关键字上

  Initiated logon request)
  <20170503-18:19:09, FIX.4.4:BANZAI->EXEC, incoming> (8=FIX.4.4?9=67?35=A?
  34=177?49=EXEC?52=20170503-18:19:09.298?56=BANZAI?98=0?108=30?10=092?)
  <20170503-18:19:09, FIX.4.4:BANZAI->EXEC, event> 
  (Received logon) fdsfhffghgfhgjgf  177?49=EXEC?52=20170503-18:19:09.298?
  56=BANZAI?98 (Received logon
Run Code Online (Sandbox Code Playgroud)

我要做的是找到第一个关键字后停止正则表达式,

  Initiated logon request)
  <20170503-18:19:09, FIX.4.4:BANZAI->EXEC, incoming> (8=FIX.4.4?9=67?35=A?
  34=177?49=EXEC?52=20170503-18:19:09.298?56=BANZAI?98=0?108=30?10=092?)
  <20170503-18:19:09, FIX.4.4:BANZAI->EXEC, event> 
  (Received logon
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,谢谢您的帮助。

regex

0
推荐指数
1
解决办法
935
查看次数

正则表达式:匹配不是某个字符串的序列

s = 'blah blah blah... _ABC_superman_is_cool_CBA_ ...blah blah blah...'
Run Code Online (Sandbox Code Playgroud)

这只是一个例子,但我希望匹配_ABC_和_CBA_之间的所有内容.所以'superman_is_cool'._ABC _..._ CBA_可能有多个部分.

re.findall('_ABC_(.*)(?=_CBA_)', s)
Run Code Online (Sandbox Code Playgroud)

我先尝试过这个,但显然根本没有正常工作.

python regex

-1
推荐指数
1
解决办法
1199
查看次数

使用DOTALL进行正则表达式,如何让它在某些时候停止?

我有一个像这样的python正则表达式:

re.compile(r'(\[chartsjs\].*\[/chartsjs\])', re.DOTALL)
Run Code Online (Sandbox Code Playgroud)

我想尝试这样的re.findall模式:

[charts]
name: mychart
type: line
labels: fish, cat, dog
data: 4, 5, 6
data2:5, 7, 9
[/charts]

this is some text

[charts]
name: second
type: line
labels: 100, 500, 1000
data: 50, 100, 10000
data2: 100, 100, 100
[/charts]
Run Code Online (Sandbox Code Playgroud)

但似乎它匹配第一个[charts]到最后一个[charts]并抓住中间的所有东西,因为当我将它打印到控制台时我看到了这个:

[u'[chartsjs]\r\nname: mychart\r\ntype: line\r\nlabels: fish, cat, dog\r\ndata: 4, 5, 6\r\ndata2:5, 7, 9\r\n[/chartsjs]\r\n\r\nthis is some text now fool\r\n\r\n[chartsjs]\r\nname: second\r\ntype: line\r\nlabels: 100, 500, 1000\r\ndata: 50, 100, 10000\r\ndata2: 100, 100, 100\r\n[/chartsjs]']
Run Code Online (Sandbox Code Playgroud)

我希望正则表达式返回第一个匹配,消除任意测试,然后找到另一个任意数量的匹配.有没有办法做到这一点?

python regex

-1
推荐指数
1
解决办法
350
查看次数

php正则表达式在字符串中找到'b'param1 ='a'; param2 ='b'; param3 ='3';

我有一个简单的问题,但对我来说很难.

如何b在字符串中查找param1='a';param2='b';param3='3';

我只能找到它,如果我将字符串替换为此(使用PHP替换)

param1='a';
param2='b';
param3='3';
Run Code Online (Sandbox Code Playgroud)

并使用此正则表达式 "/param2='(.*)';/is"

php regex

-2
推荐指数
1
解决办法
42
查看次数

preg_replace在实际匹配(索引1)而不是整个字符串

考虑

preg_replace('/(lets go).*/', "going", "lets go somewhere")
Run Code Online (Sandbox Code Playgroud)

它将输出:"前进",我想"去某个地方".

preg_replace似乎用第一个匹配替换,这是整个字符串"让我去某个地方".如何使它忽略索引0并仅忽略目标索引1?

php regex preg-replace

-3
推荐指数
1
解决办法
236
查看次数