Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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
Regex 正则表达式点(.)问题_Regex - Fatal编程技术网

Regex 正则表达式点(.)问题

Regex 正则表达式点(.)问题,regex,Regex,如果您有一个字符串,如: "hello my name is joe bloggs! I like stuff" “你好,我的名字是乔·布洛格斯”?我从以下几点开始: (.+)(!)(.+) 在点,我希望它停止 您能用功能回答吗 谢谢您需要一个问号: (.+?)(!)(.+) 你需要一个问号: (.+?)(!)(.+) 可能会有一点不同,“通常”不会“捕获”新行,而[^!]会,但除非文本中有新行,否则不会看到任何差异 可能会有一点不同,那就是“通常”不会“捕获”新行,而[^!]会,但除非

如果您有一个字符串,如:

"hello my name is joe bloggs! I like stuff"
“你好,我的名字是乔·布洛格斯”?我从以下几点开始:

(.+)(!)(.+)
在点
,我希望它停止

您能用
功能回答吗


谢谢

您需要一个问号:

(.+?)(!)(.+)

你需要一个问号:

(.+?)(!)(.+)
可能会有一点不同,
“通常”不会“捕获”新行,而
[^!]
会,但除非文本中有新行,否则不会看到任何差异


可能会有一点不同,那就是
“通常”不会“捕获”新行,而
[^!]
会,但除非文本中有新行,否则您不会看到任何差异。

没有问题;您只有三个捕获组:第一个
(.+)
(!)
,第二个
(.+)
。如果您只想匹配以
结尾的行,请考虑

(.+)!
但是如果你想清楚地识别线路的每一部分

^(.+)!.+$

同样,问题不在于
,但是如果您想要一次捕获,您应该只有一个被括号括起来的组。

没有问题;您只有三个捕获组:第一个
(.+)
(!)
,第二个
(.+)
。如果您只想匹配以
结尾的行,请考虑

(.+)!
但是如果你想清楚地识别线路的每一部分

^(.+)!.+$

同样,问题不在于
,但是如果您想要一个捕获,您应该只有一个用括号括起来的组。

用什么语言?你能发布你的代码吗?
(.+(?=\!)
是一个开始,但太短了,无法回答:PIn什么语言?你能发布你的代码吗?
(.+(?=\!)
是一个开始,但对于答案来说太短了:p这个方法有效,因为问号使
+
不贪婪,所以第一个
(.+)
在回溯之前不会尝试匹配整个字符串。对于问题中的特定示例,问号实际上是不必要的,因为只有一个问号-但非greedy
+
将更有效。这是因为问号使
+
不贪婪,因此第一个
(.+)
在回溯之前不尝试匹配整个字符串。对于问题中的特定示例,问号实际上是不必要的,因为只有一个问号-但是非reedy
+
将更有效。