相关疑难解决方法(0)

如何在JavaScript正则表达式中访问匹配的组?

我想使用正则表达式匹配字符串的一部分,然后访问该带括号的子字符串:

var myString = "something format_abc"; // I want "abc"

var arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);

console.log(arr);     // Prints: [" format_abc", "abc"] .. so far so good.
console.log(arr[1]);  // Prints: undefined  (???)
console.log(arr[0]);  // Prints: format_undefined (!!!)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?


我发现有什么不对上述正则表达式代码:实际的字符串,我反对是这样的测试:

"date format_%A"
Run Code Online (Sandbox Code Playgroud)

报告"%A"未定义似乎是一种非常奇怪的行为,但它与此问题没有直接关系,所以我开了一个新的,为什么匹配的子字符串在JavaScript中返回"undefined"?.


问题是console.log它的参数就像一个printf语句,因为我正在记录的字符串("%A")有一个特殊的值,它试图找到下一个参数的值.

javascript regex

1277
推荐指数
14
解决办法
72万
查看次数

RegEx有多个组?

我很困惑在Python中返回多个组.我的RegEx是这样的:

lun_q = 'Lun:\s*(\d+\s?)*'
Run Code Online (Sandbox Code Playgroud)

我的字符串是

s = '''Lun:                     0 1 2 3 295 296 297 298'''`
Run Code Online (Sandbox Code Playgroud)

我返回一个匹配的对象,然后想要查看这些组,但它显示的是最后一个数字(258):

r.groups()  
(u'298',)
Run Code Online (Sandbox Code Playgroud)

为什么不回归0,1,2,3,4等等?

python regex

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

如何在正则表达式中创建动态捕获组?

我有一个像这样的字符串:

$str ="
- group1
- group2
- group3
";
Run Code Online (Sandbox Code Playgroud)

我也有这个正则表达式:

/(\-\s\w+)\n(\-\s\w+)\n(\-\s\w+)/
Run Code Online (Sandbox Code Playgroud)

如你所知,还有为三个捕获组:$1,$2$3.我手动制作了这些组.我的意思是如果我将其附加到上面的字符串:

- group4 
- group5
Run Code Online (Sandbox Code Playgroud)

那个正则表达式与它们不匹配.


好吧,我有一个恒定的模式:(\-\s\w+),我想在字符串中的匹配项数量上创建一个单独的捕获组.野兔就是一些例子:

例1:

$str="
- group 1
";
Run Code Online (Sandbox Code Playgroud)

我需要一个正则表达式给我所有的字符串$1.


例2:

$str="
- group 1
- group 2
";
Run Code Online (Sandbox Code Playgroud)

我需要一个正则表达式给我第一行string(- group 1)$1和第二行(- group 2)$2


好吧,正如你在上面的例子中看到的那样,字符串是动态的,但它是按照一个常量模式...现在我想知道如何根据字符串创建一个动态捕获组?

php regex string

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

正则表达式:匹配和分组可变数量的空格分隔单词

我有一个字符串:

"foo hello world baz 33"
Run Code Online (Sandbox Code Playgroud)

foo和之间的部分baz将是一些空格分隔的单词(一个或多个).我希望将此字符串与将分组每个单词的re匹配:

>>> re.match(r'foo (<some re here>) baz (\d+)', "foo hello world baz 33").groups() 
('hello', 'world', '33')
Run Code Online (Sandbox Code Playgroud)

re应该是灵活的,以便它可以在周围没有单词的情况下工作:

>>> re.match(r'(<some re here>)', "hello world").groups() 
('hello', 'world')
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用变体([\w+\s])+,但我无法捕获动态确定数量的组.这可能吗?

python regex

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

正则表达式在字符串中查找任何双引号字符串

我试图得到一个正则表达式,将在双引号字符串中找到双引号字符串.例如:

"一些文字"字符串1"和"另一根字符串"等"

我想挑出"字符串1"和"另一个字符串".

我得到了,\"[^\"]*\"但这将匹配示例中的"一些文本".我基本上需要忽略第一个和最后一个引号并在其中匹配.

编辑:提到的示例没有围绕它的文字引号,但它是一个Javascript字符串.示例正则表达式首先匹配整个字符串.我的Javascript如下.

var string = 'some "text" etc';
var pattern = new RegExp('\"[^\"]*\"/g');
var result = pattern.exec(string);
console.log("result: ", string);
// some "text" etc
Run Code Online (Sandbox Code Playgroud)

所以它可能是我在Javascript中实现正则表达式的问题.

javascript regex

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

标签 统计

regex ×5

javascript ×2

python ×2

php ×1

string ×1