I’m trying to break apart a string in Dynamo. I think the easiest solution is regular expressions. Can you use regular expressions in a code block?
Hi Danny, no, there’s only a StringReplace node which works fine for simple cases of search/replace, but not for any rule-based stuff. You can however use Python for working with RegExp. About a year ago, I made a Python-based custom node to match regular expressions in a string. I have now added a couple more such nodes (replace regexp, split by regexp, …) to package Clockwork. Enjoy.
Clockwork has String.ReplaceRegularExpression . Example:
This is great! thank you I’ve downloaded it.
I downloaded the Clockwork package. I couldn’t replicate the example you had. I looked for a document or an email from anyone who might have worked on the Clockwork regular expression without any luck. Do you know what I need to set this up or what I might be doing wrong? The str return gives me a empty string.
I was able to replicate it based off of yours Danny. I uploaded mine that works see if you are still having the issue. regular expression
It looks identical. I’ve found that often I have to unplug a node, run, re-plug, run again to get Dynamo to work.
I read that it’s some kind of some caching buglet.
Here is the slimmest module I could come up with:
import re ##Import for re or Regular Expressions
###INPUTS (Two Inputs- 0 and 1- ad inputs to python node to correspond with th [+] button)
StrList=IN[0] ##Simple list of items to match
regexExp=IN[1] ##Regexp string to match
##see https://docs.python.org/3.3/howto/regex.html "Regular expressions in dynamo" and
##https://regex101.com for regular expressions 101 testing
##OUTPUT
Outlist = [] ##Outlist TRUE if match is find for each item in list
###Initialize Regexp
Regex = re.compile(regexExp, re.IGNORECASE)
###The actual RegExp compare for each item in the list
for item in StrList: ## For each item in the list run a match
Outlist.append ( Regex.match(item) is not None) ##If match is not NONE then it is a match (true) - else (false)- append that to the list for each item
OUT=Outlist ##Set output to results
I appreciate all the coded modules but sometimes I just want the how-to nuggets…