Hi, Let me try this again with extra clarifications to my questions... On Sat, Jan 19, 2019 at 4:23 PM delibrax <adien.den...@gmail.com> wrote:
> On regex, I would like to create that if the object with '_ + without > string on dictionary' then it won't do repeat again. So the result still > keep on '_+ without string on dictionary' not '_+ without value on > dictionary + _ + value dictionary'. > You are using re.match() in your code. This anchors the search to the start of the string. The regular expression pattern that you are using is saying "match on a string that starts with an underscore". So that is the same as if you had done sN.startswith('_'). My question was about the regex. I understand perfectly that when you do this: if sN.endswith('_' + suffix): continue you want to skip names that already have the suffix applied. But when you do this: if re.match(regex, sN): continue it is just skipping names that start with an underscore. So my question was whether you meant that, but your answer only explained the endswith(). The regex doesn't seem to be doing what you expected. Maybe you just wanted to skip any name that has underscores in it? If so, you just want something like if '_'' in sN: continue It doesn't seem like you need the regex so far. > Let say I have 'mesh_ply' then i wanna keep on 'mesh_ply'. I don't wanna > it comes to 'mesh_ply_geo' > Yes I understand that bit. The problem I proposed to you is that if 'ply' is not in your dictionary, then you don't know whether you need to add your suffix unless you define more rules. If any object name has an underscore, do you consider it to already have a suffix and it should be skipped? This could be related to my previous question. If you are just trying to skip names that have any underscore in it, you dont really need the regex. You *could* have a regex that looks for re.search(r'_.+', sN) which means to a string that has an underscore and 1 or more characters anywhere in the string. But it seems kind of pointless since you could just skip anything that contains an underscore. Skipping underscores is a pretty course filter, so if its valid to have "mesh_thing" as a valid name and you want it to be renamed to "mesh_thing_geo", then it wouldn't work. > > Any advice?! > > > On Friday, January 18, 2019 at 10:51:18 PM UTC+7, delibrax wrote: >> >> Hi there, >> >> I would like to adding the suffix regarding the object type. So here my >> py: >> >> import maya.cmds as mc >> import re >> >> SUFFIXES = { >> 'mesh' : 'geo', >> 'joint' : 'jnt', >> 'follicle' : 'fol', >> 'nurbsCurve' : 'crv', >> } >> GROUP = 'grp' >> >> def renameObject(object): >> >> for obj in object: >> sN = obj.split('|')[-1] >> >> lR = mc.listRelatives(sN, s=1) >> >> if lR == None: >> objType = mc.objectType(obj) >> else: >> objType = mc.objectType(lR) >> >> suffix = SUFFIXES.get(objType, GROUP) >> >> regex = r'_.*' >> >> if not suffix: >> continue >> >> if sN.endswith('_' + suffix): >> continue >> >> if re.match(regex, sN): >> continue >> >> newName = "%s_%s" % (sN, suffix) >> >> mc.rename(sN, newName) >> >> index = object.index(obj) >> >> object[index] = obj.replace(sN, newName) >> >> return object >> >> >> so the result is : >> >> when the 'joint' or 'mesh' (without have any suffix) been selected then >> it will has 'joint_jnt' and 'mesh_geo'. Otherwise if it is re-run then >> WON'T be 'joint_jnt_jnt' (we know it happened by statements endswith) >> >> My problem is when the object has suffix without on list dictionary (let >> say 'mesh_ply') then become 'mesh_ply_geo'. As you can see I wanna that >> every object with suffix will 'continue'. Any advice?! Thanks in advance. >> >> >> -- > You received this message because you are subscribed to the Google Groups > "Python Programming for Autodesk Maya" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to python_inside_maya+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/python_inside_maya/9df1940a-9331-4434-a50c-6e683e167e11%40googlegroups.com > <https://groups.google.com/d/msgid/python_inside_maya/9df1940a-9331-4434-a50c-6e683e167e11%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group. To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA3CYkq01OB_nELZgRDnRbTgDJjweY%3Dn7RGFsc5GNRnG3g%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.