作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我对正则表达式有很多困惑,我正在努力解决它们。这里我有以下字符串:
{start}do or die{end}extended string
我的两个不同的正则表达式,我只改变了点的位置:
(.(?!{end}))* //returns: {start}do or di
//^ See here
((?!{end}).)* //returns: {start}do or die
//^ See here
为什么第一个正则表达式吃掉最后一个“e”?
还有这种负向前瞻如何使这个 * 量词不贪婪?我的意思是为什么它不能使用超出 {end} 的字符?
最佳答案
你说你的否定前瞻,不可能匹配正则表达式,在你的情况下是:{end}
。 .
捕获除了新行之外的所有内容。
所以你的第一个正则表达式:
(.(?!{end}))*
它省略了 e
,因为: e{end}
由于否定前瞻而无法匹配。在你的第二个正则表达式中,你在另一边有点的地方可以直到:{end}d
所以 e
包含在你的第二个正则表达式中。
关于javascript - 由于负前瞻的位置导致匹配差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31482156/
我有一个看起来像这样的字符串: text = "9) 9 的文本\r\n10) 10 的文本\r\n11) 11 的文本\r\n12) ...\r\n123) 123 的文本" 我正在尝试将其拆分如下
下一代的 3D Tiles 前瞻 原文:Introducing 3D Tiles Next, Streaming Geospatial to the Metaverse 原文发布时间:2021年11月
我有一个使用正则表达式回顾的 string.replace() 函数。 myString.replace(/(?
我是一名优秀的程序员,十分优秀!