我试图弄清楚如何创建一个Sublime表达式,当给定的文本子部分(ParticleSystemRenderer :)的变量(m_CastShadows)为1到3时,可以在文件中找到该表达式,但是忽略该变量名(如果位于其他部分(MeshRenderer:)。
每个部分都以“ ---!”开头。
我如何找到以“ ParticleSystemRenderer:”开头并包含m_CastShadow: [1-3]
的部分?
在下面的示例文本中,第一个“ ParticleSystemRenderer:”块将被跳过,因为“ m_CastShadows”为0,而第二个将被匹配,因为“ m_CastShadows”为2。
我的问题是:具有Sublime返回文件的表达式是什么,其中仅文件的任何“ ParticleSystemRenderer:”部分中的“ m_CastShadows”变量不为零,而忽略了在其他变量中找到的任何其他“ m_CastShadows”变量部分?
我尝试使用以下表达式来返回所有包含使用表达式m_CastShadows: [1-3]
包含此字符串的文件,但是它将返回任何“ m_CastShadows”不为零(不仅是“ ParticleSystemRenderer:”部分为零)的文件。 / p>
除此之外,尽管我对RegEx非常迷失。我确实尝试在regexr.com上构建一个表达式,但无法为此找到有效的表达式。
示例文字:
--- !u!1 &75000372733
MeshRenderer:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000010438045922}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
--- !u!23 &23000010372327926
ParticleSystemRenderer:
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_MotionVectors: 1
--- !u!2 &23006841372327911
SomeOtherSection:
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 0
--- !u!23 &97320010372327543
ParticleSystemRenderer:
m_Enabled: 1
m_CastShadows: 2
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_MotionVectors: 1
--- !u!2 &23006841372327911
SomeOtherSection2:
m_Enabled: 1
m_CastShadows: 3
m_ReceiveShadows: 0
在上面的示例文本中,如果仅“ ParticleSystemRenderer:”部分的“ m_CastShadows”大于0,我希望Sublime返回该文件。无论其值如何,它都会忽略“ MeshRenderer:”中的那个。 / p>
如果将“ ParticleSystemRenderer:”部分的“ m_CastShadows”更改为零(同样,无论“ MeshRenderer:”部分中的那个设置为-还是该菜单的任何其他部分,也不会返回文件)碰巧使用相同变量名的文件。
还值得注意的是,该文件可能包含多个“ ParticleSystemRenderer:”部分。只要那些“ ParticleSystemRenderer:”部分之一中的“ m_CastShadows”变量之一大于零,我就希望它返回文件。
在此先感谢RegEx向导提供指导!
答案 0 :(得分:3)
这是针对您的特定示例
(?:\r?\n|^)ParticleSystemRenderer:.*\r?\n(?:[ ]{2,}.*\r?\n)*?[ ]{2,}m_CastShadows:[ ]*([1-9]\d*)
https://regex101.com/r/GVSWuZ/1
如果您的引擎支持多行模式,请使用
(?m)^ParticleSystemRenderer:.*\s*(?:^[ ]{2,}.*\s*)*?[ ]{2,}m_CastShadows:[ ]*([1-9]\d*)
答案 1 :(得分:1)
This expression可能会帮助您设计一个:
(ParticleSystemRenderer:[\s\S]*)(m_CastShadows: [1-3])
此图显示了它的工作方式: