regex - 只获取正则表达式中的第一个匹配项

标签 regex

给定这个字符串:hello"C07","73" (包括引号)我想要“C07”。我正在使用(?:hello)|(?<=")(?<screen>[a-zA-Z0-9]+)?(?=")尝试这样做。然而,它也始终匹配“73”。我试过...0-9]+){1}... ,但这也行不通。我一定误解了这是如何工作的,但我想不出任何其他方法。

如何获取引号之间的第一组字符?

编辑:这是 a link显示我的问题。

编辑:好的,这正是我想做的:

基本上,我想要得到的是:1)“hello”的正匹配,2)一个名为“screen”的组,在本例中为“C07”,3)一个名为“screen”的组“格式”,在本例中为“73”。

“C07”和“73”都会有所不同。 “你好”永远都是一样的。 “hello”和第一个双引号之间可能有也可能没有额外的逗号。

最佳答案

对于您最初的问题,即如何在第一个匹配后停止,要么删除全局搜索,要么从字符串的开头搜索即可完成此操作。

对于后一个问题,您可以为您的组命名,并在整个行中不断扩展模式。

hello"(?<screen>[^"]+)","(?<format>[^"]+)"

演示:http://regex101.com/r/PBXe8l/1

关于regex - 只获取正则表达式中的第一个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43747556/

相关文章:

java - 正则表达式找到最短匹配?

MySQL REGEXP 在哪里没有找到预期的结果

php - 以特定字符串开头和结尾且中间没有(其他)字符串的正则表达式

javascript - 动态更改跨度的文本格式

python - 折叠连续空白

R 中的正则表达式限制一个术语 AND 另一个不是 OR 另一个

java - 如何拆分字符串,只保留某些分隔符?

php - 将正则表达式与整个字符串进行匹配

ios - 在 Swift 3 中使用 switch 语句构建正则表达式

java - perl 和 java 正则表达式功能之间有什么区别?