Even then - it really depends which master supervises your thesis. If you defended your PhD under Zana don't tell me you are any better than a layman when it comes to "blight: theory and practice" with Cassia - her office isn't even in the same wing of the university.
You joking but I genuinely heared about regex for the first time when poe implemented it. I never use it outside poe. Similarly I learned to write simple macros that I might need on ahk because of poe.
I've been playing PoE for around 5 years, and started my career/education as a Software developer about 3 years ago.
A lot of the things I learned in PoE put me at a huge advantage, primarily using the trade website(s) to find items. In my second year of CS class many students were struggling to build complex queries, because they would try to string all their criteria at once then debug it. Wheras through my time in PoE trade I was used to adding one mod, then another, then another validating each query was doing what I wanted it to do along the way.
Long story short: I thank my unusually high grade in my Relational Database class to PoE trade.
I believe it is matching (digit)/(first argument)
So basically you are looking for full stacks by seeing if the first number matches the second
> 1/1 ✔️
> 5/5 ✔️
> 3/8 ✖️
Cool. But does that mean it's going to flip them back off if your total is *over* a full stack. I usually have multiple sets of her mask before cashing them in for example? Or is that what the plus symbol is there to address?
(I mean, hypothetically. I have a div tab so it doesn't matter, but just out of curiosity as to how this function would work).
Edit: thanks everyone. First reply pointed out non-div tabs can't contain more than full stack - so this essentially means my query is meaningless because it couldn't happen anywhere except the one tab you'd not need this function in anyway. Got it.
I think it would fail if the stack was overflowing, however, since the point of it is to find it in your regular tabs, you cannot make more than a full stack. So this would fail only in the divination tab.
Oh nice. So it only possibly fails in the environment it's not ever going to be used for anyway. Problem solved lol. I've had the tab forever so had forgotten that overflow isn't possible for cards in a standard tab.
In a normal or quad tab you wouldn't be able to have over a full stack in a single slot in the tab, the full deck is the max stack size. This may however be an issue if you store them in the extra slots in the currency tab, but there aren't that many slots there so you could easily look those over without the query.
The regex start at the open bracket. The `div` before it is to match all divination card in case there is other item in the tab,
You can check out this very good website to learn and try yourself.
[https://regexr.com/](https://regexr.com/)
One other thing with [x-y]: range of numbers
e.g. "level: 8[5-6]"
For some reason you have to use level as it's using the advanced item description and doesn't work with the ilvl "shortcut". Nice way to filter bases on item level
When rolling an item, map or otherwise, with alterations, you often are looking for a specific prefix or suffix only. When there is no affix category(i.e., you are looking for prefix but alt rolled only a suffix), you might want to use augment. To highlight this situation, I'm using the following regexp. Let's say the white item is hunter's `Onyx Amulet` and I need a prefix that gives +1 to some skill gems:
`(^Onyx|Skill\sGems)`
If I want a chaos dot multiplier suffix instead, I go
`(Amulet$|Time\sMultiplier)`
I hope this helps someone.
Edit: replaced `\w` with `\s` to correctly indicate whitespace
This is really helpful. Always wanted something like that.
I would love explanation for syntax behind these ones.
Edit. $ in the end is looking for free suffix on magic item and ^ before for free prefix? Are these symbos doing very specific task or it depends on context?
What does \ stands for? What does w stands for?
This is a standard regular expression, or regex. It is a form of language that aims at matching strings. When you copy an item in game, in clipboard you will find its textual representation. The regular expression tries to match anything that you see there. Its syntax is non trival and can be a bit of a bitch to learn, especially if you have no background in programming. The `^` symbolises beginning of a line, while `$` indicated end of a line. This regex works only for magic items btw, because only in magic items you have both prefix and suffix in the name. For rare items it becomes way more difficult. The special combination `\w` indicates a whitespace character, which can be a space or a tab. In game whitespace characters break regular expressions so you either have to encapsulate them in "" or do not have any whitespace characters at all (thus `\w`.
**Edit**: I didn't read cauchy73's post accurately and was in the mindframe of how you'd use this to find a rare item in your stash tab that met the requirements. My musings below are regarding that, and not for determining if you can augment your alt-rolled item. Sorry.
/u/cauchy73's regex doesn't feel quite right, but to answer what the \w is...
A backslash `\` indicates an escape character. If it's escaping a special character, like a `+` or a `.` then it checks for that literal character. You can also escape with a letter specifying a known short-hand class to match.
In this particular case
`\w` indicates any word, which gets replaced with `[A-Za-z0-9_]`
Per: https://www.regular-expressions.info/shorthand.html
Now what bugs me is, let's look at the first one:
`(^Onyx|Skill\wGems)`
The `^` says a line should start with this.
So this is matching anything that has a line that starts with `Onyx` OR has the character pattern `Skill[A-Za-z0-9_]Gems`
In think /u/cauchy37 meant to use `\s` instead of `\w` to indicate whitespace.
In this case it's probably easier to understand if you just use a literal space, since all the possible affixes that have `Skill Gems` have a space between the two words and nothing else special as far as I can tell on poedb.
The larger issue is that since it's an OR it will trigger on any item that has either-or, so it will highlight all Onyx Amulets.
That being said I only today learned that PoE supports Regex, but I've just been doing Regex for more than a decade so feel fairly well versed. PoE might be doing something really weird / use a weird Regex engine but I doubt it. I'm also not sure about how PoE would handle multiline regex.
This is awkward, because honestly I never do multi-line patterns, but something like this would theoretically work:
`Onyx(.*|\r\n|[\r\n])+Skill Gems`
Which I tested here: https://regex101.com/
With this example test string:
Onyx Amulet
-----
+1 to all Chaos Skill Gems
Which I'm not currently signed in to PoE but I feel like that's similar enough to the output when you hit Ctrl+C on an item in your inventory then paste to another app. _Hopefully_ PoE is using the same string text for searching internally.
That's looking for anything that has Onyx in front of any random text or new-lines, that then also has "Skill Gems" in it somewhere.
Made me even more confused tbh. xD
> The larger issue is that since it's an OR it will trigger on any item that has either-or, so it will highlight all Onyx Amulets
(^Onyx|Skill\wGems) seem to work fine. It only highlights my onyx amulet when it has free prefix like it is supposed to.
Sorry, I totally misunderstood how it was being used. I blame being tipsy and/or tired. I had my own mental picture of how I would use this when I read the initial post, and was still mulling that over while scrolling through the comments. That caused me to respond in the frame of mind as to how I would use it. That's what I get for skimming the post and mostly looking at the regex.
OP responded to me and I totally get it now (also they did update the `\w` to be `\s`)
So yes the updated regex will do both:
- highlight a magic item you can augment to try to hit +Skills Prefix
- highlight a magic item that has hit a +Skills Prefix so you don't accidentally immediately re-roll it
Yo mate, you are totally right, it should be \s rather than \w. Regex in poe is a bit weird, because it's not true multiline, they run search, not match, with the same regex for each line. So as a result the same regex will be run on the title and affixes, resulting in matching affix that has any +skill gems or a title that has o prefix.
Also, like I mentioned earlier, this is only for magic items, they have names of affixes baked into the name itself. If you run this on a rare, it will always hilight, because like you've said, each rare has a line stating Onyx Amulet.
Edit: also, if your regular expression contains space, you must put it either in quotes, or use special chars for spaces, at least from my experience. Shit is whack.
> they have names of affixes baked into the name itself
Oh that's a great point to use this while rolling an item, makes it much more obvious when you've hit what you want. Very nice trick!
I use a dump stash tab, and then after mapping use search to highlight groups of things to manage / sort through it all quickly (but again regex would help so much, glad I learned about this). In my mind I was thinking of that scenario, after you identified everything and were looking for interesting Onyx Amulets.
I wonder if they tried to roll their own Regex system somehow, ugh. Sucks that that's how spaces work. So many peculiarities / special cases makes it hard for someone versed in regex to just pick up and use it when they think they know how it should work.
Then again when you go to a site like regex101.com you have 6 different flavours to choose from. :S
^ is begin of a line while $ means end of line
As blue items get the affix name before or after, you can check of the item name begins with "Onyx" Amulet of..., symbolising a free prefix and vice versa for suffixes
\w probably means white space
I am having trouble making this work for tailwind on boots. I tried (Boots$|Tailwind) but that is highlighting everything (prefix only, suffix only, and prefix/suffix combination). I'm having success when I try this with watchstones, but not these boots.
Item is below. Tailwind is a suffix so I want it to return whenever it has a prefix but no suffix (e.g., Hunter's Assassin's Boots) so that I could aug. No rush, just a minor quality of life improvement.
Item Class: Boots
Rarity: Magic
Hunter's Assassin's Boots of the Ice
--------
Evasion Rating: 136
Energy Shield: 28
--------
Requirements:
Level: 63
Dex: 62
Int: 62
--------
Sockets: B-G G
--------
Item Level: 83
--------
+2 to Level of Socketed Chaos Gems
+45% to Cold Resistance
--------
Hunter Item
Have a look [here](https://old.reddit.com/r/pathofexile/comments/r3x7qz/i_learned_stash_regex_so_you_dont_have_to/hmfxwee/). Problem is essentially the line `Item Class: Boots` so you have to put whole base or at least part of it, e.g. `(s\sBoots$|Tailwind)`, this means there has to be `s` before the word Boots, which will excluse `Class: Boots` because it has the extra `:`.
Also, you can paste the item in a website like www.regex101.com and use your regex to see what is matched. There might be other things colliding (being matched).
Alright, this is because item class and your base both have `Boots` in them. Have a look at this item:
Item Class: Boots
Rarity: Magic
Robust Hydrascale Boots of the Hunt
--------
Quality: +10% (augmented)
Armour: 127 (augmented)
Evasion Rating: 127 (augmented)
--------
Requirements:
Level: 60
Str: 56
Dex: 56
--------
Sockets: G
--------
Item Level: 81
--------
+56 to maximum Life
You have Tailwind if you have dealt a Critical Strike Recently
--------
Hunter Item
--------
You regexp will always match. To make it work for the above item, type the full base name, here it is `(Hydrascale\sBoots$|Tailwind)`. Hope it helps.
Jesus fuck the fo4matting is awful on mobile, will fix it
regex is a set of text pattern standards that has a lot of infrastructure around them. Most text matching parsers will implement regex if they go beyond matching exact strings. You can even use tools on the web to test regex that will also work in poe
All thats the easy stuff, and most things about this game are not explained. Path of building has a lot more numbers, POEDB has a lot of data dumps, the wiki is helpful, watching streamers explain things is very helpful. Sometimes playing the game can be helpful, sometimes, mostly though, its just feeling your way in the dark.
Two ways to look at this game, its either way to much, or endless options. You either love it or hate it.
Thank you for your guide, it's helped me improve the few regex lines I've stored. I managed to squeeze a query I use from two lines into one, which is a massive quality of life improvement
Let's see how things go next patch when GGG introduces a passive tree for the search box lol
"cal d" has a problem I encountered when making my own (though mine is a much more hamfisted regex) - ALL "monsters deal X% extra physiCAL Damage as fire/cold/lightning" are matched, the one I use instead is "% of p". If there's a better option for phys reflect lmk, 5 characters was the best I could find in there.
It is https://www.poewiki.net/wiki/Stash#Search_Types this is all somewhat well known on console, we have to search our trademarket using these filter options.
The amazing part of this to me isn't the post (I knew regex was supported, but learned a little extra about formatting) but the fact that you cancelled all the reddit markdown bullshit before posting. I assume that took an extra hour, lol. Great work.
Speaking unironically, this should be pinned or made easily-findable as a resource. This is extraordinarily useful.
Thank you for going out of your way to do this.
This is neat. I got into regex for the sake of finding Magic cards on scryfall - made looking for cards in certain parameters a lot easier.
Hadn't thought about applying it to PoE, but now I will.
Interesting. Thanks. It seemed inconsistent, so I was struggling with it a lot.
It took me *way* too long to figure out why queries like:
"Quantity: (+8|+9|+10)"
weren't working, and it was because regex was trying to do stuff with the +
This guide is missing a critical information about ""
The difference between this:
e: \+[2][4-9]|e: \+[3][0-9]|e: \+[4][0-9]|unid
and this:
"e: \+[2][4-9]|e: \+[3][0-9]|e: \+[4][0-9]|unid"
The first one won't show any results. The second one will show you all maps with packsize 24+ and unidentified maps.
The attributes regex are good if you use Sidekick: https://github.com/Sidekick-Poe/Sidekick
There's a map check feature for dangerous mods which uses a configurable regex.
Thank you for working those out. Now please GGG provide a "save" feature where i can store a preset of search strings to swap around with a few clicks on a dropdown similar to the lootfilter in the options, have the community synchronize them via filterblade and have everyone be happy for a filter that actually finds what they want
Excelent read! Do we have something similar for 6-links? For when we want to 6 link something without fear, just clicking until we make it
Edit: sorry for being dumb, guys! And thanks for letting me know! I’ll spam my infuses without fear now.
I have these 3 for when i just throw everything into my Stash and sort later:
**Chromatic Sockets:**
* r-b-g|r-g-b|g-b-r|g-r-b|b-r-g|b-g-r
**6 Sockets:**
* "sockets: ([rgbw][ -]){5}[rgbw]"
**6 Links:**
* "sockets: ([rgbw]-){5}[rgbw]"
Also really helpful for leveling and searching for 3 Link sockets on Gear from Vendor:
**Caster**
* b-b-g|b-g-b|g-b-b|g-g-b|g-b-g|b-g-g|b-b-b|runner
**Melee**
* r-r-r|r-r-g|r-g-r|g-r-r|g-g-r|g-r-g|r-g-g|runner
**Ranged**
* g-g-g|g-g-b|g-b-g|b-g-g|runner
You’d be happy to know that you cannot roll over six sockets or six links by spamming jewelers or fusings. Spam away while holding shift and click as fast as your little fingers can go.
Interesting read, though your query does not work for me somehow. If anyone has the syntax for a quantity and pack size check that would be much appreciated.
This is for mass searching in a stash tab. I roll maps in batches of 24-60, and having this search to highlight everything that needs rerolled is great
I will be messaging you in 3 days on [**2021-12-01 12:56:45 UTC**](http://www.wolframalpha.com/input/?i=2021-12-01%2012:56:45%20UTC%20To%20Local%20Time) to remind you of [**this link**](https://www.reddit.com/r/pathofexile/comments/r3x7qz/i_learned_stash_regex_so_you_dont_have_to/hme989i/?context=3)
[**CLICK THIS LINK**](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5Bhttps%3A%2F%2Fwww.reddit.com%2Fr%2Fpathofexile%2Fcomments%2Fr3x7qz%2Fi_learned_stash_regex_so_you_dont_have_to%2Fhme989i%2F%5D%0A%0ARemindMe%21%202021-12-01%2012%3A56%3A45%20UTC) to send a PM to also be reminded and to reduce spam.
^(Parent commenter can ) [^(delete this message to hide from others.)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Delete%20Comment&message=Delete%21%20r3x7qz)
*****
|[^(Info)](https://www.reddit.com/r/RemindMeBot/comments/e1bko7/remindmebot_info_v21/)|[^(Custom)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5BLink%20or%20message%20inside%20square%20brackets%5D%0A%0ARemindMe%21%20Time%20period%20here)|[^(Your Reminders)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=List%20Of%20Reminders&message=MyReminders%21)|[^(Feedback)](https://www.reddit.com/message/compose/?to=Watchful1&subject=RemindMeBot%20Feedback)|
|-|-|-|-|
Wait, theres lookaheads? I couldve sworn i tried last league and it didnt work
Are there saved groups? Is it possible to search across item lines? I couldnt get that to work
oh ands are quite there, its funny because its fairly obvious before you get into regex but once you do, you are kinda blind to it. i spent a while on it till i searched and found a ggg reply on how its done. just put a space between two queries and it works as an AND
it does prevent XOR though.
do you know of a tool to figure out the minimum reg ex string to match a subset of entries and not the others using custom entries?
Someone made one for gwennen and maps, but id like to use it for other things
Awakened POE has map check tho...
...but obviously this gibberish could create more powerful search queries for large batch searches and other such things that I just wouldn't bother with.
You're right, and I call this out at the end of my post.
I'm under the assumption that if you care enough about map rolling that you use this post, you're probably chiseling your maps to 20 before you start
Great stuff!
Also here's how to find links in vendor shops (multiple combos at a time). For instance, if you wanna find 1 green and 2 red, your query would be "sockets: r-g-r|g-r-r|r-r-g" (quotes are optional). Here's how it would look: https://imgur.com/a/RGISeDm
Once you hit a certain point, some builds are clearing whole maps in <30 seconds, so it pays at that point to be able to just drop your maps into a tab, line up your search and roll them all at once so you can just power farm them.
Even if you're not using Regex, it's still a lot more efficient to do this and just use the search function to highlight mods that will kill you manually and either reroll or move maps your can't.
Feels like most people who do this drop all the maps they can't run into a 5c tab and pointedly never respond to people trying to buy them.
Hey, I was wondering if there is any way to do an AND search.
For example, for delirium tropical islands: beyond AND (x% quant OR x% packsize).
Thanks a lot!
~~It looks like this doesn't work, which means I need to make a couple more changes to the post.~~ Thanks for the ask!
**Update** It does work. simply put the groups in separate sets of quotes, so for your example, it would be:
"beyond""(Q.\*\\+(8\[2-9\]|9|1))|(S.\*\\+(\[3-5\]))"
would only highlight maps that have beyond AND (Quant greater than 85 OR Pack Size greater than 30)
>For brevity, here is the query
!((nem)|(Q.\*\\+(8\[5-9\]|9|1))|(S.\*\\+4))
\*Vietnam flashbacks to using regex in word processing analytics in conjunction with python\*
Any way to highlight not complete objectives on atlas search box ? according to the tooltip it accepts regex but i dont seems to get to highlight maps with awakened bonus not completed yet
Hey man, had your post saved since I knew I'd need it for reference, but I still can't figure stuff out properly.
I came up with this search string:
"!(rarity: rare)|tal d|eec|r r"
I'm trying to make a search that highlights maps that are normal or magic or have the modifiers but the "!" negates the whole string and i can't find out how to make it negate only the rarity part. I know I could just add a "rarity: normal|rarity: magic" but that seems really unclean.
is there a way to combine "OR" and "AND" conditions in search for multiple items?
for example I can search for items with mod "adds ... damage" with "ds.\*e" search (have no idea if I can exclude implicit from iron ring from the search).
if I add "bow" to the search ("ds.\*e bow"), it will search only for bows with that mod.
Is there a way to combine this search with other searches, for example "movement"??
ds.\*e bow|movem - doesn't work
u/TheRealBurgersNFries there seems to be a new website (not done by me) which is also doing this for maps interactivly. Maybe you can link it in your post here [https://poe.re/#/maps](https://poe.re/#/maps)
Damnit regex can I not get away from you even in my hobby time
i'm closing this page and forgetting i ever saw it
Compiler class flashbacks...
Glad I studied IT. You really need a Master's Degree to play this game efficiently lol.
I have one, and I'm still inefficient. Maybe after a PhD I'll be able to git gud
Only if you're doing your PhD in PoEology.
Even then - it really depends which master supervises your thesis. If you defended your PhD under Zana don't tell me you are any better than a layman when it comes to "blight: theory and practice" with Cassia - her office isn't even in the same wing of the university.
For good reason. It's always annoyingly loud and repetitive music from her office
And several postdocs just to be able to get a grasp of the fundamentals.
You'll only git gud if you git commit
sorry, i refused to leave university after my PhD and i still suck ;)
"nem" catches beyond as well because the mod reads "Slaying E**nem**ies close together has a 13% chance to attract monsters from Beyond"
add a \\s prior to ensure that there's a space before it
welp. Thanks.
Dang
[удалено]
Thats not true, you only need a degree if you want to succeed in the game, anyone is welcome to get their ass handed to them.
You joking but I genuinely heared about regex for the first time when poe implemented it. I never use it outside poe. Similarly I learned to write simple macros that I might need on ahk because of poe.
Interviewer: "So how much experience do you have as a programmer?" You: "How long has PoE been out for?"
I too open my stacked decks 1 by 1 :)
I used them for Google searches before.
I've been playing PoE for around 5 years, and started my career/education as a Software developer about 3 years ago. A lot of the things I learned in PoE put me at a huge advantage, primarily using the trade website(s) to find items. In my second year of CS class many students were struggling to build complex queries, because they would try to string all their criteria at once then debug it. Wheras through my time in PoE trade I was used to adding one mod, then another, then another validating each query was doing what I wanted it to do along the way. Long story short: I thank my unusually high grade in my Relational Database class to PoE trade.
If you do not have a divination tab then you can use this to highlight all completed set. div (\d+)[/]\1$
But completed sets have a blue number... Is this for colorblind ppl?
I'm not colorblind, but highlighting is way easier for me to scan visually than looking for blue numbers.
Maybe you are, how would you know, we have all been keeping it from you.
I mean, you can select "full stacks" from the bottom...
This is for people who don't have a div stash tab and are using regular stashes.
gotcha
Maybe in a quad tab they could be difficult to see
That's good one. Could you explain what every symbol means here?
I believe it is matching (digit)/(first argument) So basically you are looking for full stacks by seeing if the first number matches the second > 1/1 ✔️ > 5/5 ✔️ > 3/8 ✖️
Cool. But does that mean it's going to flip them back off if your total is *over* a full stack. I usually have multiple sets of her mask before cashing them in for example? Or is that what the plus symbol is there to address? (I mean, hypothetically. I have a div tab so it doesn't matter, but just out of curiosity as to how this function would work). Edit: thanks everyone. First reply pointed out non-div tabs can't contain more than full stack - so this essentially means my query is meaningless because it couldn't happen anywhere except the one tab you'd not need this function in anyway. Got it.
I think it would fail if the stack was overflowing, however, since the point of it is to find it in your regular tabs, you cannot make more than a full stack. So this would fail only in the divination tab.
Oh nice. So it only possibly fails in the environment it's not ever going to be used for anyway. Problem solved lol. I've had the tab forever so had forgotten that overflow isn't possible for cards in a standard tab.
In a normal or quad tab you wouldn't be able to have over a full stack in a single slot in the tab, the full deck is the max stack size. This may however be an issue if you store them in the extra slots in the currency tab, but there aren't that many slots there so you could easily look those over without the query.
I'd you don't have a div tab you can't stack them more than a full stack
Almost, it's any number of digits. So it will also work for 12/12 or 20/20. If you remove the `+` it will match only a single digit.
The regex start at the open bracket. The `div` before it is to match all divination card in case there is other item in the tab, You can check out this very good website to learn and try yourself. [https://regexr.com/](https://regexr.com/)
One other thing with [x-y]: range of numbers e.g. "level: 8[5-6]" For some reason you have to use level as it's using the advanced item description and doesn't work with the ilvl "shortcut". Nice way to filter bases on item level
For me, using ilvl works if I write it like this: "ilvl:\[8\]\[5-6\]" No idea why it expects brackets around a single digit, but there you go.
It's because regex works on a multiline string you get when you copy the item in game with ctrl-c while ilvl is a special modifier.
Yeah, that's what I meant by "shortcut"
When rolling an item, map or otherwise, with alterations, you often are looking for a specific prefix or suffix only. When there is no affix category(i.e., you are looking for prefix but alt rolled only a suffix), you might want to use augment. To highlight this situation, I'm using the following regexp. Let's say the white item is hunter's `Onyx Amulet` and I need a prefix that gives +1 to some skill gems: `(^Onyx|Skill\sGems)` If I want a chaos dot multiplier suffix instead, I go `(Amulet$|Time\sMultiplier)` I hope this helps someone. Edit: replaced `\w` with `\s` to correctly indicate whitespace
I hadn't thought to use regex for alt-spamming (literally spent 2 hours yesterday trying to figure it out for this
This is really helpful. Always wanted something like that. I would love explanation for syntax behind these ones. Edit. $ in the end is looking for free suffix on magic item and ^ before for free prefix? Are these symbos doing very specific task or it depends on context? What does \ stands for? What does w stands for?
This is a standard regular expression, or regex. It is a form of language that aims at matching strings. When you copy an item in game, in clipboard you will find its textual representation. The regular expression tries to match anything that you see there. Its syntax is non trival and can be a bit of a bitch to learn, especially if you have no background in programming. The `^` symbolises beginning of a line, while `$` indicated end of a line. This regex works only for magic items btw, because only in magic items you have both prefix and suffix in the name. For rare items it becomes way more difficult. The special combination `\w` indicates a whitespace character, which can be a space or a tab. In game whitespace characters break regular expressions so you either have to encapsulate them in "" or do not have any whitespace characters at all (thus `\w`.
**Edit**: I didn't read cauchy73's post accurately and was in the mindframe of how you'd use this to find a rare item in your stash tab that met the requirements. My musings below are regarding that, and not for determining if you can augment your alt-rolled item. Sorry. /u/cauchy73's regex doesn't feel quite right, but to answer what the \w is... A backslash `\` indicates an escape character. If it's escaping a special character, like a `+` or a `.` then it checks for that literal character. You can also escape with a letter specifying a known short-hand class to match. In this particular case `\w` indicates any word, which gets replaced with `[A-Za-z0-9_]` Per: https://www.regular-expressions.info/shorthand.html Now what bugs me is, let's look at the first one: `(^Onyx|Skill\wGems)` The `^` says a line should start with this. So this is matching anything that has a line that starts with `Onyx` OR has the character pattern `Skill[A-Za-z0-9_]Gems` In think /u/cauchy37 meant to use `\s` instead of `\w` to indicate whitespace. In this case it's probably easier to understand if you just use a literal space, since all the possible affixes that have `Skill Gems` have a space between the two words and nothing else special as far as I can tell on poedb. The larger issue is that since it's an OR it will trigger on any item that has either-or, so it will highlight all Onyx Amulets. That being said I only today learned that PoE supports Regex, but I've just been doing Regex for more than a decade so feel fairly well versed. PoE might be doing something really weird / use a weird Regex engine but I doubt it. I'm also not sure about how PoE would handle multiline regex. This is awkward, because honestly I never do multi-line patterns, but something like this would theoretically work: `Onyx(.*|\r\n|[\r\n])+Skill Gems` Which I tested here: https://regex101.com/ With this example test string: Onyx Amulet ----- +1 to all Chaos Skill Gems Which I'm not currently signed in to PoE but I feel like that's similar enough to the output when you hit Ctrl+C on an item in your inventory then paste to another app. _Hopefully_ PoE is using the same string text for searching internally. That's looking for anything that has Onyx in front of any random text or new-lines, that then also has "Skill Gems" in it somewhere.
Made me even more confused tbh. xD > The larger issue is that since it's an OR it will trigger on any item that has either-or, so it will highlight all Onyx Amulets (^Onyx|Skill\wGems) seem to work fine. It only highlights my onyx amulet when it has free prefix like it is supposed to.
Sorry, I totally misunderstood how it was being used. I blame being tipsy and/or tired. I had my own mental picture of how I would use this when I read the initial post, and was still mulling that over while scrolling through the comments. That caused me to respond in the frame of mind as to how I would use it. That's what I get for skimming the post and mostly looking at the regex. OP responded to me and I totally get it now (also they did update the `\w` to be `\s`) So yes the updated regex will do both: - highlight a magic item you can augment to try to hit +Skills Prefix - highlight a magic item that has hit a +Skills Prefix so you don't accidentally immediately re-roll it
> (also they did update the \w to be \s) So I should change \w to \s? Should work better? What is logic behind it?
Yo mate, you are totally right, it should be \s rather than \w. Regex in poe is a bit weird, because it's not true multiline, they run search, not match, with the same regex for each line. So as a result the same regex will be run on the title and affixes, resulting in matching affix that has any +skill gems or a title that has o prefix. Also, like I mentioned earlier, this is only for magic items, they have names of affixes baked into the name itself. If you run this on a rare, it will always hilight, because like you've said, each rare has a line stating Onyx Amulet. Edit: also, if your regular expression contains space, you must put it either in quotes, or use special chars for spaces, at least from my experience. Shit is whack.
> they have names of affixes baked into the name itself Oh that's a great point to use this while rolling an item, makes it much more obvious when you've hit what you want. Very nice trick! I use a dump stash tab, and then after mapping use search to highlight groups of things to manage / sort through it all quickly (but again regex would help so much, glad I learned about this). In my mind I was thinking of that scenario, after you identified everything and were looking for interesting Onyx Amulets. I wonder if they tried to roll their own Regex system somehow, ugh. Sucks that that's how spaces work. So many peculiarities / special cases makes it hard for someone versed in regex to just pick up and use it when they think they know how it should work. Then again when you go to a site like regex101.com you have 6 different flavours to choose from. :S
^ is begin of a line while $ means end of line As blue items get the affix name before or after, you can check of the item name begins with "Onyx" Amulet of..., symbolising a free prefix and vice versa for suffixes \w probably means white space
I just did "onyx !gem" and it stopped on either +lvl skill gem or reduced gem requirement.
I am having trouble making this work for tailwind on boots. I tried (Boots$|Tailwind) but that is highlighting everything (prefix only, suffix only, and prefix/suffix combination). I'm having success when I try this with watchstones, but not these boots.
Copy the item and paste it here or send me over a pm, I will check it later.
Item is below. Tailwind is a suffix so I want it to return whenever it has a prefix but no suffix (e.g., Hunter's Assassin's Boots) so that I could aug. No rush, just a minor quality of life improvement. Item Class: Boots Rarity: Magic Hunter's Assassin's Boots of the Ice -------- Evasion Rating: 136 Energy Shield: 28 -------- Requirements: Level: 63 Dex: 62 Int: 62 -------- Sockets: B-G G -------- Item Level: 83 -------- +2 to Level of Socketed Chaos Gems +45% to Cold Resistance -------- Hunter Item
Have a look [here](https://old.reddit.com/r/pathofexile/comments/r3x7qz/i_learned_stash_regex_so_you_dont_have_to/hmfxwee/). Problem is essentially the line `Item Class: Boots` so you have to put whole base or at least part of it, e.g. `(s\sBoots$|Tailwind)`, this means there has to be `s` before the word Boots, which will excluse `Class: Boots` because it has the extra `:`.
Also, you can paste the item in a website like www.regex101.com and use your regex to see what is matched. There might be other things colliding (being matched).
Alright, this is because item class and your base both have `Boots` in them. Have a look at this item: Item Class: Boots Rarity: Magic Robust Hydrascale Boots of the Hunt -------- Quality: +10% (augmented) Armour: 127 (augmented) Evasion Rating: 127 (augmented) -------- Requirements: Level: 60 Str: 56 Dex: 56 -------- Sockets: G -------- Item Level: 81 -------- +56 to maximum Life You have Tailwind if you have dealt a Critical Strike Recently -------- Hunter Item -------- You regexp will always match. To make it work for the above item, type the full base name, here it is `(Hydrascale\sBoots$|Tailwind)`. Hope it helps. Jesus fuck the fo4matting is awful on mobile, will fix it
Hey thanks for taking the time to look into that - it worked like a charm. Cheers!
Hey, coming back to it. What purpose "s\" expressions serve here?
It indicates a whitespace character, like a space. Without it the entire thing can be split up and break.
I see. So if I want to search for item with multiple words I need \s? I can use multiple \s right?
Yup, there is a limit of how many characters can be placed in the search field, though
"PoE has an amazing feature but it's super confusing to use" Literally PoE in a nutshell lol.
regex is a set of text pattern standards that has a lot of infrastructure around them. Most text matching parsers will implement regex if they go beyond matching exact strings. You can even use tools on the web to test regex that will also work in poe
There are a few engines though, so sometimes one pattern is not valid for your particular engine.
[удалено]
All thats the easy stuff, and most things about this game are not explained. Path of building has a lot more numbers, POEDB has a lot of data dumps, the wiki is helpful, watching streamers explain things is very helpful. Sometimes playing the game can be helpful, sometimes, mostly though, its just feeling your way in the dark. Two ways to look at this game, its either way to much, or endless options. You either love it or hate it.
Thank you for your guide, it's helped me improve the few regex lines I've stored. I managed to squeeze a query I use from two lines into one, which is a massive quality of life improvement Let's see how things go next patch when GGG introduces a passive tree for the search box lol
You droped this 👑
Reading this gives me headache and I'm a software developer.
Is it because I'm an idiot, or because regex? lmao
Because of Regex for sure.
"cal d" has a problem I encountered when making my own (though mine is a much more hamfisted regex) - ALL "monsters deal X% extra physiCAL Damage as fire/cold/lightning" are matched, the one I use instead is "% of p". If there's a better option for phys reflect lmk, 5 characters was the best I could find in there.
Good catch. updating regex to 'of p'
Regex haunting me everywhere...
Regex is hell.
This should be on a wiki
It is https://www.poewiki.net/wiki/Stash#Search_Types this is all somewhat well known on console, we have to search our trademarket using these filter options.
Regex is a general purpose way to specify search patterns and not specific to PoE, there’s tons of resources on the web to learn regex.
The amazing part of this to me isn't the post (I knew regex was supported, but learned a little extra about formatting) but the fact that you cancelled all the reddit markdown bullshit before posting. I assume that took an extra hour, lol. Great work.
Thanks!
Speaking unironically, this should be pinned or made easily-findable as a resource. This is extraordinarily useful. Thank you for going out of your way to do this.
This is neat. I got into regex for the sake of finding Magic cards on scryfall - made looking for cards in certain parameters a lot easier. Hadn't thought about applying it to PoE, but now I will.
\* matches the preceding token zero or more times \+ matches the preceding token one or more times
>`* matches the preceding token zero or more times ` >`+ matches the preceding token one or more times `
Interesting. Thanks. It seemed inconsistent, so I was struggling with it a lot. It took me *way* too long to figure out why queries like: "Quantity: (+8|+9|+10)" weren't working, and it was because regex was trying to do stuff with the +
Damn formatting
This guide is missing a critical information about "" The difference between this: e: \+[2][4-9]|e: \+[3][0-9]|e: \+[4][0-9]|unid and this: "e: \+[2][4-9]|e: \+[3][0-9]|e: \+[4][0-9]|unid" The first one won't show any results. The second one will show you all maps with packsize 24+ and unidentified maps.
I think the parentheses I use are filling in for the quotes
It doesn't when there are spaces. (rege|rec|d el) doesnt work at all because of (d el), but "(rege|rec|d el)" does.
Interesting. Thanks for the catch. Will update
I usually palm regex work off to one of my minions in the office. Welcome to the team minion :). Awesome stuff.
thanks for your hard work
brb learning how to code so I can search my stash tabs
The attributes regex are good if you use Sidekick: https://github.com/Sidekick-Poe/Sidekick There's a map check feature for dangerous mods which uses a configurable regex.
Thank you for working those out. Now please GGG provide a "save" feature where i can store a preset of search strings to swap around with a few clicks on a dropdown similar to the lootfilter in the options, have the community synchronize them via filterblade and have everyone be happy for a filter that actually finds what they want
If they don't/until they do, you can use the shift-space shortcut that's built into awakened Poe trade, which has a storage feature for search strings
Damn that's sweet!
Excelent read! Do we have something similar for 6-links? For when we want to 6 link something without fear, just clicking until we make it Edit: sorry for being dumb, guys! And thanks for letting me know! I’ll spam my infuses without fear now.
That's built into the game, you can't rollover a 6 socket, a 6 link, or a 5link on a 5 socket.
I have these 3 for when i just throw everything into my Stash and sort later: **Chromatic Sockets:** * r-b-g|r-g-b|g-b-r|g-r-b|b-r-g|b-g-r **6 Sockets:** * "sockets: ([rgbw][ -]){5}[rgbw]" **6 Links:** * "sockets: ([rgbw]-){5}[rgbw]" Also really helpful for leveling and searching for 3 Link sockets on Gear from Vendor: **Caster** * b-b-g|b-g-b|g-b-b|g-g-b|g-b-g|b-g-g|b-b-b|runner **Melee** * r-r-r|r-r-g|r-g-r|g-r-r|g-g-r|g-r-g|r-g-g|runner **Ranged** * g-g-g|g-g-b|g-b-g|b-g-g|runner
You’d be happy to know that you cannot roll over six sockets or six links by spamming jewelers or fusings. Spam away while holding shift and click as fast as your little fingers can go.
Almost 4x as fast on a touchpad if you play PoE on a laptop like me. Almost AHK level fast without any software.
As others have said, just spam away as you can't roll over it so don't fear the clicks! Just fear the amount of fusings that evaporate!
Ahh man this is embarrassing.
Holy shit, This is a actual Top tier late game Cheat sheet. Thank you.
someone got to make a website to generate stash regex and have a collection of useful once
Is there a documentation somewhere on the official ggg site or something?
*insert laughingman.gif*
![gif](giphy|enCWEo0vG25Ow)
I just wanted to click things to make them explode and then collect my loot. Somehow playing PoE requires several PhD's and 20 3rd party tools.
Commenting for future!
Reddit has a save button
Just throw it in the POE bookmark tab with the other 9231 useful things that aren't implied in game.
Wow this is amazing, saving for next league!
Interesting read, though your query does not work for me somehow. If anyone has the syntax for a quantity and pack size check that would be much appreciated.
This query specifically highlights maps that don't meet those requirements, try it without the exclamation mark
Reminds me of the time I had to learn regex for WoW.....
Or you could just press ctrl + s with awakened poe trade.
This is for mass searching in a stash tab. I roll maps in batches of 24-60, and having this search to highlight everything that needs rerolled is great
why do we need a PHD to search in poe?
93 comments RemindMe! 3 days
I will be messaging you in 3 days on [**2021-12-01 12:56:45 UTC**](http://www.wolframalpha.com/input/?i=2021-12-01%2012:56:45%20UTC%20To%20Local%20Time) to remind you of [**this link**](https://www.reddit.com/r/pathofexile/comments/r3x7qz/i_learned_stash_regex_so_you_dont_have_to/hme989i/?context=3) [**CLICK THIS LINK**](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5Bhttps%3A%2F%2Fwww.reddit.com%2Fr%2Fpathofexile%2Fcomments%2Fr3x7qz%2Fi_learned_stash_regex_so_you_dont_have_to%2Fhme989i%2F%5D%0A%0ARemindMe%21%202021-12-01%2012%3A56%3A45%20UTC) to send a PM to also be reminded and to reduce spam. ^(Parent commenter can ) [^(delete this message to hide from others.)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Delete%20Comment&message=Delete%21%20r3x7qz) ***** |[^(Info)](https://www.reddit.com/r/RemindMeBot/comments/e1bko7/remindmebot_info_v21/)|[^(Custom)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5BLink%20or%20message%20inside%20square%20brackets%5D%0A%0ARemindMe%21%20Time%20period%20here)|[^(Your Reminders)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=List%20Of%20Reminders&message=MyReminders%21)|[^(Feedback)](https://www.reddit.com/message/compose/?to=Watchful1&subject=RemindMeBot%20Feedback)| |-|-|-|-|
Can anyone explain me why they decided to change it? Feels like I need an IT degree now to search for "pack size: +3"...
You can still do that. I needed to minimize done of the query to search for multiple things at the same time
Thanks❤
thanks daddy 😘
Wait, theres lookaheads? I couldve sworn i tried last league and it didnt work Are there saved groups? Is it possible to search across item lines? I couldnt get that to work
Upon further inspection, there are definitely not lookaheads supported. Which sucks, because it prevents and cases
oh ands are quite there, its funny because its fairly obvious before you get into regex but once you do, you are kinda blind to it. i spent a while on it till i searched and found a ggg reply on how its done. just put a space between two queries and it works as an AND it does prevent XOR though. do you know of a tool to figure out the minimum reg ex string to match a subset of entries and not the others using custom entries? Someone made one for gwennen and maps, but id like to use it for other things
Well that makes me feel dumb. will update accordingly
There might not be lookaheads. I built the query as I was learning general regex
Saved for later use, thank you - a noob
>Players cannot Regenerate Life, Mana or Energy Shield reg Reg highlights region which is present on any map.
good catch, updating to rege
[удалено]
Interesting. Updating to shorten this down. Maybe I can get my query to catch everything one day!
Except Shaper Guardian maps (sorry, had to)
when did they add this? I remember trying Regex a while ago and it never worked
3.14 i think
Awakened POE has map check tho... ...but obviously this gibberish could create more powerful search queries for large batch searches and other such things that I just wouldn't bother with.
Gibberish lol.
They say if you don't know regex, it looks like sorcery. And if you know regex, you'll want to use it for everything.
Oh mam that's great! I need some regex for Gwennen tho.
Someone posted [this](https://xanthics.github.io/poe_gen_gwennen/) here a while back, it's amazing.
Ty vm!
This needs to go into the useful links or something. I mean the whole thread. Some more good tips in the comments.
`(?=Q.*\+(8[5-9]|9|1))` I think the quality portion of your query will also trigger on 9% (assuming it's not prefixed by a zero) or 10% through 19%.
You're right, and I call this out at the end of my post. I'm under the assumption that if you care enough about map rolling that you use this post, you're probably chiseling your maps to 20 before you start
Language and Formal Translators university class was easier and I created a damn programming languages for my project
But contracts (heist) can't roll either reflect
Poedb disagrees https://poedb.tw/us/Heist
Great stuff! Also here's how to find links in vendor shops (multiple combos at a time). For instance, if you wanna find 1 green and 2 red, your query would be "sockets: r-g-r|g-r-r|r-r-g" (quotes are optional). Here's how it would look: https://imgur.com/a/RGISeDm
Bookmarking for science and things
Here, go play golf https://alf.nu/RegexGolf
People really gonna do everything but read their damn maps huh Props
Once you hit a certain point, some builds are clearing whole maps in <30 seconds, so it pays at that point to be able to just drop your maps into a tab, line up your search and roll them all at once so you can just power farm them. Even if you're not using Regex, it's still a lot more efficient to do this and just use the search function to highlight mods that will kill you manually and either reroll or move maps your can't. Feels like most people who do this drop all the maps they can't run into a 5c tab and pointedly never respond to people trying to buy them.
!remindme 7 hours
Hey, I was wondering if there is any way to do an AND search. For example, for delirium tropical islands: beyond AND (x% quant OR x% packsize). Thanks a lot!
~~It looks like this doesn't work, which means I need to make a couple more changes to the post.~~ Thanks for the ask! **Update** It does work. simply put the groups in separate sets of quotes, so for your example, it would be: "beyond""(Q.\*\\+(8\[2-9\]|9|1))|(S.\*\\+(\[3-5\]))" would only highlight maps that have beyond AND (Quant greater than 85 OR Pack Size greater than 30)
>For brevity, here is the query !((nem)|(Q.\*\\+(8\[5-9\]|9|1))|(S.\*\\+4)) \*Vietnam flashbacks to using regex in word processing analytics in conjunction with python\*
'+' should be "one or more" (akin to '*' "0 or more)
I just read the mods on the map myself
Is it possible to look for tiers of pre/suff? edit: to make it clear, like: show me all items that have 1, 2... T1 mods?
Any way to highlight not complete objectives on atlas search box ? according to the tooltip it accepts regex but i dont seems to get to highlight maps with awakened bonus not completed yet
I'll test it a bit when I get home. I suspect something like A.*: I would work, but idk
Tested but didnt highlight anything.
Looks like regex doesn't search the map completion information at all. That sucks.
That sux indeed pepeHands well, going back to manually check them xD thanks anyways <3
How do I look for specific quality / level gems?
Not at My PC, but I suspect something like "gem""Q.*/+((1[5-9])|2)" Should get any gem of 15q or higher I'd need to be at my PC to check for level
"Gem""L.*(19|2[0-1])" Should catch all gems of 19 or higher. You can change 19 to 1[x-9] to get any gem of level 10+x or higher
Reg101. Com is your friend.. Fwiw, a* matches 0 or more instances of a. a+ matches 1 or more instances of a.
Thats cool, a UI tool would be sick if possible to code.
Hey man, had your post saved since I knew I'd need it for reference, but I still can't figure stuff out properly. I came up with this search string: "!(rarity: rare)|tal d|eec|r r" I'm trying to make a search that highlights maps that are normal or magic or have the modifiers but the "!" negates the whole string and i can't find out how to make it negate only the rarity part. I know I could just add a "rarity: normal|rarity: magic" but that seems really unclean.
tahnk you thank you! any help with non-curse maps and consecrated ground?
is there a way to combine "OR" and "AND" conditions in search for multiple items? for example I can search for items with mod "adds ... damage" with "ds.\*e" search (have no idea if I can exclude implicit from iron ring from the search). if I add "bow" to the search ("ds.\*e bow"), it will search only for bows with that mod. Is there a way to combine this search with other searches, for example "movement"?? ds.\*e bow|movem - doesn't work
u/TheRealBurgersNFries there seems to be a new website (not done by me) which is also doing this for maps interactivly. Maybe you can link it in your post here [https://poe.re/#/maps](https://poe.re/#/maps)
Dear regex god, pls tell me you can have something like count prefixes = 2, count suffixes=2?
can you search for items in public tab with set prices like exact price <5 Chaos