16 ms·
Show HN: Regex.ai – AI-powered regular expression generator
Regex.ai is an AI-powered tool that generates regular expressions. It can accurately generate regular expressions that match specific patterns in text with precision. Whether you're a novice or an expert, Regex.ai's intuitive interface makes it easy to input sample text and generate complex regular expressions quickly and efficiently. Overall, Regex.ai is a game-changer that will save you time and streamline your workflow.
- cutler 4y agoDang, there goes my investment in Jeffrey Friedl's "Mastering Regular Expressions" which launched my programming career after I discovered a reference to it in "Dreamweaver Bible" back in 2000.
- mr_gibbins 4y agoThis looks like a great tool, I would like to ask if it really is AI-powered? AI is a term that's been heavily co-opted by the expert systems crowd, especially when marketing solutions. Does this tool actually learn from user input and improve output accordingly? That would be my definition. Whichever way this was built it's a useful tool, thanks!
- clbrmbr 4y agoThe input isn’t rich enough to generate generalizable regexes (regecies?). Would probably be better off with a text input explaining what the user wants to match. Text-to-regex includes intent.
- mikeponders 4y agoI tried it with the default example, and it couldn't match only the street names. How does this work under the hood?
- florianfmmartin 4y agoHow about instead of an AI generating a regex we can't understand, we put energy using actually well developped method for parsing & validating text? Why put code you can't understand in your database? For complex inputs, use actual peg parsers : https://docs.rs/peg/latest/peg/ https://docs.rs/peg/latest/peg/ For simplet inputs, express your intent with readable methods using a lib : https://github.com/sgreben/regex-builder/ https://github.com/sgreben/regex-builder/ & https://github.com/francisrstokes/super-expressive https://github.com/francisrstokes/super-expressive
- column 4y agoReality check : there are people like my colleague who aren't software engineers and still have to occasionally maintain/create a regex in some corporate software config.
- soiler 4y agoThat's even worse. They might not have the knowledge to realize the regex an AI gives them is bunk, or to debug it when it fails. I'd like to see some numbers on a tool like this. If a huge majority of people are seeing genuine improvements in their workflow with it, I won't be a luddite yelling at them. Rare, low-severity failures shouldn't hold us back. But the potential cost of failure with (any) regex is very high, so I personally wouldn't want to trust any remotely mission-critical to a person who doesn't understand regex well enough to write it themself, and if they can write it on their own that's often faster than debugging AI-generated regex.
- thunky 4y ago> How about instead of an AI generating a regex we can't understand Would you feel better if it generated a regex-builder expression instead of a regex? Even if regex-builder generates a regex under the hood? In any case, the regex itself is only an implementation detail.
- b5n 4y agoOnce you know regex well enough to replace regex you realize that regex is pretty well developed. There are certainly cases where different parsing methods/grammars are a better fit, but regex shines in many places.
- elif 4y agoI had a problem so I used an AI generated regex. Now I have an unknowable number of problems.
- gbro3n 4y agoThe results I got from this were unfortunately not useful. For example in trying to extract the property names from a connection string, I highlighted all of the property names along with the equals sign. So for "PostgresSql": "Host=localhost;User ID=postgres;Password=xxxx;Database=test;Application Name=Test1234,Port=35432;Pooling=false;" I selected User ID=, Host=, Application Name=, Password= The results were pretty useless, using the literal inputs as pattern matches: (User ID|Host|Application Name|Password)=([^;]) (User ID|Host|Application Name|Password)=([\w]) (User ID=)|(Host=)|(Application Name=)|(Password=) ([Uu]ser [Ii][Dd]=)|([Hh]ost=)|([Aa]pplication [Nn]ame=)|([Pp]assword=) The following prompt given to Chat GPT 4 however: > Write a regular expression to extract the property names from this PostgreSQL connection string: "PostgresSql": "Host=localhost;User ID=postgres;Password=xxxx;Database=test;Application Name=Test1234,Port=35432;Pooling=false;" Yields the response with an explanation: (?<=[^\\w])([A-Za-z ]+)(?==) "This regular expression will match any sequence of alphabetic characters (upper or lower case) that are followed by an equal sign (=). The negative lookbehind (?<=[^\\w]) ensures that the property name is not preceded by another word character." A quick test on regex101.com shows this works perfectly. Sorry, don't like to be overly critical. Someone has attempted to solve a common problem for developers, but LLMs are going to blow applications like this away. And I think that Chat GPT at version 4 has become a truly useful tool. I was interested to test this since I'd been writing a regular expression earlier in the day for a similar usecase, which I've written up here: https://journals.appsoftware.com/public/76/227/4221/blog/software-development/chat-gpt-4-testing-regular-expression-generation https://journals.appsoftware.com/public/76/227/4221/blog/sof...
- lando2319 4y agoRegular expressions, and various bash scripting techniques are where I've found chat GPT to be most useful Just like normal software development you have to check the solution right away, but it really works great
- textread 4y agoIf you would like to generate a regular expression by giving an example input text and an example output match, you could use this closed form solution tool:- https://regex-generator.olafneumann.org/ https://regex-generator.olafneumann.org/ There is an excellent HN comment that provides more reading material around regex generation:- https://news.ycombinator.com/item?id=32037544 https://news.ycombinator.com/item?id=32037544
- rpigab 4y agoIt's nice and there are use cases for it, but if I ever need something like it, I'll prolly just explain what I want to ChatGPT and tell it what regexp engine I'm using, and it'll give me results I'll paste to regexr.com for tests. The only added value here is that I wouldn't need to think of a prompt, but I've become good at finding nice prompts for programming problems, so directly querying ChatGPT is what I'd go for, personally. Also, I'm not sure what underlying tech is used, and the only explanations on the tool seems to be a Youtube video, so I didn't look further. I'd like to know more about how it's made, if that's possible and something the author would be ok to share.
- huqedato 4y agoI built a better one, more flexible: https://huqedato.github.io/RegexAI https://huqedato.github.io/RegexAI
- jedberg 4y agoUsually when you have an AI like this that is supposed to generate verifiable results, you do an adversarial test where you ask it to solve problems that you already know the answer to, to make sure it works. It looks like no one did that here. Even using the sample data provided, if you highlight a few of the addresses, it can't find the rest of them, mainly because it generates a regex with ST/AVE/LN in it, missing all the ones with RD. And if you add an RD sample, it just adds that to the list. There's lots of great innovation coming with LLMs, but people are forgetting their "AI basics" when it comes to verifying them.
- ouraf 4y agoGoing a little more "end user needs vs new tech offers", the intent is on the right place, but the output isn't helping as much as normal programmatic tools At least for me, what would make this a killer app would be the ability of reading a document or pdf or big text dump and 1: identify "possible fields" (first name, date of birth), "probable fields" (middle name or other fields that are part of data set but doesn't appear in every line) and "probable junk data" (page numbers, page headers, useless pdf padding" 2: allow selection or tuning of these fields to generate regex to catch or remove only the data related to the parsed fields. I THINK there's something done with pandas (pandoc?)that can help tearing a document apart and getting fields or basic doc structure, but AI would need to take it from here and present it in a clear, concise and optionally explained way so a busy office worker could just copy the regex filter in a spreadsheet formula or program function
- literallyroy 4y agoThe description here is a huge put off for me — no substance. Generated by AI probably?
- politician 4y agoNow you've got 3 problems? https://blog.codinghorror.com/regular-expressions-now-you-have-two-problems/ https://blog.codinghorror.com/regular-expressions-now-you-ha...
- AdieuToLogic 4y agoOr just swoop in with Perl? https://xkcd.com/208/ https://xkcd.com/208/
- bongobingo1 4y agoAnd a bill.
- rvz 4y agoand a solution still looking for and creating more problems.
- pyuser583 4y agoI really wonder if this sort of thing is the how AI will work. We tell AI what we want. AI produces a hyper-specific, but barely comprehensible result. We look over the result to make sure it’s all good. Then execute.
- yawnxyz 4y agoI just used ChatGPT to create a ton of permutations for product pricing that I'm putting on Stripe as products. Except... it made ONE ERROR that I just spent two hours tracking down and fixing in my JSON file and now in the Stripe dash. (I coincidentally found the error using ChatGPT lol). It's probably still faster and less error-prone than I could have done it manually. But it's still error-prone...
- sacred_numbers 4y agoThe Reflexion paper (https://arxiv.org/abs/2303.11366 https://arxiv.org/abs/2303.11366) that came out recently shows how this kind of mistake might be overcome. Asking the model to think about the answer after it's generated a first draft greatly improves accuracy. Also, prompt engineering such as copying the generated code, pasting it in a new chat and saying "There's a bug in this code, please find it" can go a long way. There is so much low hanging fruit in harnessing the power of these models that is just being ignored because some even lower hanging fruit (RLHF, system messages, context window size, plugins, etc) is being released seemingly every few days.
- yawnxyz 4y agoThat’s really interesting! It’s like treating this thing like a kid and telling them to really think about the answer and show the work. Weird!
- arlcode 4y agoI recall reading that's partly because it doesn't have an inner monologue. It only "knows" what it writes down and if you force it to print the intermediate step it can more accurately get to the final answer.
- waldenyan20 4y agoCool hack! I'm having some trouble thinking of a case where I wouldn't just explain to Copilot / ChatGPT what I need. Maybe specifically in cases where I had the raw data but not the column titles?
- nice_byte 4y agoeven with the examples on the landing page, the regexes generated for the emails are not really usable. it needs way more examples to produce the right thing. even though I doubt most production code uses the actual, correct, rfc-compliant regex to match emails (it's a monster), this does nothing to improve the situation...
- nextaccountic 4y agoIt really need some zero-shot or few-shot magic from LLMs, or even heuristics to detect common patterns like emails, and just generate a sane regex, rather than stuff like [A-Za-z]{2,}@libertylabs\.ai which will obviously fail with a few more examples.
- hk__2 4y agoIt doesn’t make any sense to use a regex to check emails beside some very basic typos. Why do you need an email? To send messages to the user. Then do that: send a validation message and see if someone gets it.
- deleted 4y ago[deleted]
- aradox66 4y agoRegexes are one of those things that are much easier to write good tests for than to write the code itself. I like this use of LLM
- regexLL 4y agoGreat to see our service rank 2nd in Hacker News! Surprise by the sudden rise in traffic. We will be deploying regex.ai v1.1 on the first week of April , with descriptions and 5x improved performance. Stay tuned!
- AdieuToLogic 4y ago> Regex.ai is an AI-powered tool that generates regular expressions. Or, just write regular expressions? > ... Regex.ai's intuitive interface makes it easy to input sample text and generate complex regular expressions quickly and efficiently. See: https://www.ibm.com/topics/overfitting https://www.ibm.com/topics/overfitting Inputting the sample text: foo bar baz baz bar foo And highlighting the first "baz" produced patterns which all had "[A-Z][a-z]*@libertylabs\\.ai" included, assumedly due to the default inclusions. Removing those and highlighting the second "baz" resulted "<Agent B>" as the results in one case. There is no explanation of any patterns generated. If a person is to use one of the generated patterns and Regex.ai is supposed to "save you time and streamline your workflow", no matter "[w]hether you're a novice or an expert", then some form of verification and/or explanation must exist. Otherwise, a person must know how to formulate regular expressions in order to determine which, if any, of the presented options are applicable. And if a person knows how to formulate regular expressions, then why would they use Regex.ai?
- qwertox 4y agoUsing your example and deselecting the email addresses I end up with these suggestions: \b(foo|bar|baz)\b \w(foo|bar|baz)\w \bbaz\b [fF][oO][oO]|[Bb][Aa][Rr]|[Bb][Aa][Zz] It only lacks a dice button which randomly selects the "correct" answer.
- 6510 4y agoThere are tools that somewhat explain what each part of a regex does.
- barbariangrunge 4y agoI’d you don’t understand regexes well enough to write them yourself, you should not get some ai to generate them for you. You won’t be able to verify whether they do what you want and the bugs can be subtle and destructive
- soiler 4y agoI read a few weeks ago here on HN about one large SAAS grinding to a halt because of a greedy selector in one line of regex. Not sure how people find old stories, it's lost to me now. But it was an excellent example of why regex is dangerous and requires a lot of care to write. I wouldn't trust an AI to write my regex unless I saw that people were finding it to be consistently better than they were are writing what they need.
- libraryatnight 4y agoThis doesn't seem to generate great regex, but it does seem to generally work(ish?) so I guess nobody would care. That said, how's this work? Are you just sending this off to one of the AI api's - what's going on with the data pasted in the box after we hit run? Struck me as funny when we have another thread going about people pasting company data into ChatGPT and here we have a regex AI with an example that looks like it's encouraging you to trust it with helping you regex through your PII, just paste it in the box and highlight what you need lol (not saying that's the intent, just that's what less savvy users may do) Company site does not inspire much confidence: https://libertylabs.ai/ https://libertylabs.ai/ Light on details, heavy on philosophers, trend setters, idea banks, and radicals that make me worried I'm dealing with opportunists taking swings at monetizing a bunch of .ai domains. Especially the weird cinematic banner.
- jen729w 4y ago> Company site does not inspire much confidence: https://libertylabs.ai/ https://libertylabs.ai/ Ah c'mon. It's a bunch of kids -- which I say with envy not malice -- giving something new a go. Let 'em at it! The products will speak for themselves. This one, meh, not so much. But we should be encouraging not disparaging.
- danmur 4y agoPrompt Engineer is such a pompous title. I think AI operator would be more accurate.
- mmaunder 4y agoHow is this AI rather than just string logic? What model was trained? Trained on what? Maybe producthunt would be a better place to post promos?
- lifewallet_dev 4y agoCan it parse emails? Obviously that's hard.
- freeone3000 4y agoThe traditional answer is, of course, https://metacpan.org/release/RJBS/Email-Valid-1.200/source/lib/Email/Valid.pm https://metacpan.org/release/RJBS/Email-Valid-1.200/source/l... . The real answer is “send an email to it and see if anyone gets it”
- ar9av 4y agoHonestly, writing a regex is way easier than reading a regex, no? So it feels like now I have the harder task of proving that the generated regex is correct.
- qsort 4y agoI agree. I similar arguments ("just write examples") a lot, and I really don't get that. Finding a comprehensive set of examples for code, regexps, shell, whatever is very, very hard.
- lowefk 4y agoReading regex is much easier than writing them when using visualization tools such as https://regexper.com/ https://regexper.com/, https://regex101.com/ https://regex101.com/, and https://jex.im/regulex/ https://jex.im/regulex/, especially for beginners. I always use them to read regex.
- pygy_ 4y agoFor JS/TS, I’ll add https://github.com/compose-regexp/compose-regexp.js https://github.com/compose-regexp/compose-regexp.js to that list.
- qrio2 4y agohttps://www.debuggex.com/ https://www.debuggex.com/ is my favorite
- Arbortheus 4y agoUsing regexper changed my life. I’m not afraid of even the most complex regexes anymore.
- JTyQZSnP3cQGa8B 4y agoOr you can use "verbose regex" which some languages implement like in Python (https://docs.python.org/3/library/re.html#re.X https://docs.python.org/3/library/re.html#re.X). The spaces are ignored and you can add comments on each line. I used this in the past and my coworkers were happy about it because they could understand the regex and even modify it.
- qsort 4y agoJust so that you know, your problem is called "regular expression synthesis", there's vast literature on it and a LLM is by no means necessary. https://arts.units.it/retrieve/handle/11368/2758954/57751/2014-Computer-AutomaticSynthesisRegexExamples%20(2).pdf https://arts.units.it/retrieve/handle/11368/2758954/57751/20... https://arxiv.org/pdf/1908.03316 https://arxiv.org/pdf/1908.03316 https://cs.stanford.edu/~minalee/pdf/gpce2016-alpharegex.pdf https://cs.stanford.edu/~minalee/pdf/gpce2016-alpharegex.pdf
- hackernewds 4y agoand yet a decent regex generator has not existed before.
- eviks 4y agoThis one isn't decent
- nigamanth 4y agoHow so? Other than the UI what else can be improved?
- cowl 4y agoHow do I tell it to generate a regex for emails? Try selecting the emails. all four generated Regexes are wrong. Even if one of them was right? how do I choose between 4 choices if I Don't know the meaning? I have to verify the generated Regexes, Veryfing complicated regexes is much harder than writing them in first place.
- danmur 4y agoWell, I tried extracting fields from some logs I had lying around and I can tell you why I think it's not useful: 1. I select DEBUG and INFO, but it doesn't work out that there are WARNs etc in there and extract those too. 2. Some of the regexes are just.. wrong? I selected individual fields but there's one mangled regex that gives me two fields and the text in between, I didn't ask for that and it's no use. 3. None of the regexes could extract the date I selected (of the form 2023-03-28 05:23:28.844); some of the 'agents' used the literal date, the only one that broken it down into \d's didn't match anything because the DEBUG and INFO were mangled into there. I'm not really sure how this would be at all useful in its current form?
- beiller 4y agoFinally I can use this to write a regex to parse HTML! (Glad to finally able to bust out the meme)
- dboreham 4y agoComing soon: an AI powered regex explainer.
- eviks 4y agoThe most basic check - that the suggestions are working - is missing
- benatkin 4y agoThat would make it look broken when it's part of what it is. Why should it pretend to be something else? It's not an algorithm that produces a specific result. Edit: I got a message saying there were too many requests. So much for not appearing broken. And I'm not using a VPN or anything so I'd appear as ordinary traffic.
- _andrei_ 4y agoRelated: https://github.com/pemistahl/grex https://github.com/pemistahl/grex
- majastro 4y agoMy dude, how do I get in touch with you?!
- _andrei_ 4y agocheck my profile ^_^
- bastardoperator 4y agoYes!
- ekiauhce 4y agoWriting regexps by hand, indeed, might be tedious task in some cases. One I familiar with is to match datetime interval, when you need to narrow down log rows for a particular time range. So I built a tool just for it :) https://github.com/ekiauhce/interval-to-regexp https://github.com/ekiauhce/interval-to-regexp
- karmasimida 4y agoHow is this compare to GPT-4? I am using it to write regex all the time nowadays.
- alexnew 4y agoTo be honest I find ChatGPT sufficient for regex. I usually ask it for test cases that I can then validate in a regex playground to make the regex is working as expected.
- laserbeam 4y agoExactly my thought. I can just go to GPT and ask it for regex related stuff. Why do I need a dedicated AI for that? I don't.
- zelphirkalt 4y agoThis might make people put more unnecessary regexes into code, because AI. Beware.
- mrcino 4y agoJust as with every AI tool you need to be an expert in scope that you are operating the AI tool... You have to know reg-ex really well to use this tool safely.
- epaga 4y agoVery useful tool for novices, though I'd assume experts will much rather write one themselves... P.S. assuming the poster is scanning the comments, typo in the site title: "aritifical"
- yellowsir 4y agowho ate my space?
- wahidislam 4y agoimo using chatgpt for generating regex is better, good project although
- tomashubelbauer 4y agoI was curious if this would be smart enough to generate a regex for any four letter word so I copied the tagline of the site and highlighted all four letter words in it. (I have deleted the previous highlights of course.) It generated three regexes that just had a union of those words and one which started off good-ish by looking for any word of length of three or four, but then tacked on some random suffix and in the end this most promising regex turned out to not even match anything in the source text. As a suggestion to the authors of this tool I'd propose to add a step where any generated regexes that don't match anything in the input text are removed from the results.
- benrutter 4y agoThis is a really nice implementation, so full credit to the creator. Regex is always confusing to compose, but it's also one of those situations where I can't help but wonder if the solution is just to improve upon / provide a nice abstraction for regex rather than handing over full control to a non-deterministic AI. I've seen at least 2 projects in the last 6 months using LLMs to generate bash code which seems like a similar solve. LLMs are super cool, but there's a massive advantage to actually understanding what you're code does, and LLM generated regex, bash, assembly etc loses that.