我想使用正则表达式匹配字符串的一部分,然后访问该带括号的子字符串:
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"
)有一个特殊的值,它试图找到下一个参数的值.
我很困惑在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
等等?
我有一个像这样的字符串:
$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
好吧,正如你在上面的例子中看到的那样,字符串是动态的,但它是按照一个常量模式...现在我想知道如何根据字符串创建一个动态捕获组?
我有一个字符串:
"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])+
,但我无法捕获动态确定数量的组.这可能吗?
我试图得到一个正则表达式,将在双引号字符串中找到双引号字符串.例如:
"一些文字"字符串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中实现正则表达式的问题.