menu
Daily Bits Email

The email you entered is already receiving Daily Bits Emails!

Top 1 deals for Aba Software Software

38
Followers

Get all the best deals that Aba Software has to offer right here on BitsDuJour. Click quick, these discounts don't last long, and we update daily! We have deals on Aba Search and Replace, .

If you Follow Aba Software, you'll get emails when deals go live!

Visit the Aba Software website.

Aba Search and Replace Screenshot
Aba Search and Replace (PC) Discount
for PC

Aba Search and Replace

Easily Perform Global Search and Replace Operations

30% Off
 

Vendor Pulse

The latest news, straight from our vendors.

  • Mar 8 at 5:00pm
    Aba 2.8 released

    The new version goes beyond just search and replace; it allows you to convert text and images to and from Base64, encode and decode HTML entities like <, encode and decode percent-encoding (also known as URL encoding), decode JSON Web Tokens, and convert Unix/JavaScript timestamps to dates and vice versa.

    Decode image from Base64 Decode Unix timestamp

    Other new features and fixes include:

    • Fixed: a long file name was cut in the combobox (many thanks to Duane who reported the bug).
    • An option to disable the dot matches newline mode (the \s modifier; thanks to Helmet for the idea).
    • Line numbers in the text viewer (thanks to Yonatan).
    • An option to preserve the files' date/time (thanks to Duane).
    • Syntax highlighting for Scala and Go.
    • Ctrl+1, Ctrl+2, etc. to switch between the tabs.
    • Updated translations.
    • Fixed: when reading from disk failed, Aba crashed (mostly applicable to old HDDs and network drives).
    • Fixed: incorrect cursor position for Chinese characters.
    • Fixed: excessive completion sound when the search pattern was changed.
    • Fixed: in the Undo > In files field, the vertical scrollbar was displayed for long directory names.
    • Fixed: in some cases, a previous file name remained in the status bar when the search did not find anything.

    Just as always, the upgrade is free for the registered users.

  • Jan 11 at 2:06am
    Anonymizing a dataset by replacing names with counters

    Sometimes, you need to remove personal data from a dataset, such as when preparing examples or unit tests. With Aba Search and Replace, you can mask names, addresses, and other personally identifiable information by replacing them with counters.

    Let's use the following CSV file with information about Alice in Wonderland characters as an example:

    Name,Address,Favorite Color
    Alice,Near the Rabbit Hole,Blue
    Mad Hatter,Tea Party Garden,Orange
    White Rabbit,Rabbit Hole,White
    Queen of Hearts,Hearts Castle,Red
    Cheshire Cat,Forest Tree Hollow,Purple
    Caterpillar,Mushroom Grove,Green
    Tweedledee,Looking Glass Land,Yellow
    Tweedledum,Looking Glass Land,Yellow
    March Hare,Mad Tea Party Estate,Brown
    Dormouse,Tea Party Garden,Gray
    

    You want to remove real names and addresses from this file. A common approach would be to write a script that opens the file, reads each line, replaces the first two fields with counters, and then prints the result. However, it's easier to do the same task with Aba Search and Replace. You don't have to write boilerplate code for file reading, and you can immediately preview the replacement results.

    We'll use the following regular expression to match the first two columns in the CSV file while skipping the headers:

    (?<=\n)(\N+?),(\N+?),
    

    Here's how it works: first, we check that a newline \n is found before the match using a lookbehind assertion, which allows us to skip the headers (the first line). Next, we match two fields separated with commas.

    We would like to replace the names (Alice, Mad Hatter, White Rabbit, etc.) with a counter like person1, person2, person3, etc. Aba provides functions for inserting counters; Aba.matchNo works well for this case:

    Aba window

    For the address field, we don't want to use the same sequence (1, 2, 3), so let's do some math with the counter in order to start from 77 and decrement each street number by 3. The replacement expression becomes:

    person\{ Aba.matchNo() },\{ 80 - Aba.matchNo() * 3 } Wonderland Drive,
    

    Note that proper anonymization is more complex than this. In our example, it's still possible to identify some characters after the replacement. For example, White Rabbit predictably likes white, Queen of Hearts likes red ❤️, and the twins (Tweedledee and Tweedledum) share the same favorite color, yellow. So the anonymization process won't meet GDPR requirements and you need further manual edits to remove or randomize such cases, but the replacement is a good first step for removing sensitive information.

  • Jul 14 2024 at 8:30am
    Automatically add width and height to img tags

    If you set the width and height attributes for your img tags, the browser can allocate the correct amount of space for the image before loading it. This prevents content below the image from shifting around as the page loads. The layout becomes stable, which means that:

    • your users won’t accidentally click a wrong button because of layout shift;
    • the performance is better because the browser doesn’t have to recalculate the layout as the images load;
    • page load feels smoother and faster.

    That’s why Google recommends setting the width and height attributes in your HTML code.

    If you have a lot of images, it may take some time to specify their dimensions. With Aba Search and Replace, you can do it automatically.

    The typical case

    Adding width and height to HTML images

    Please use this search pattern to capture the image file name in the first subexpression:

    <img src="([^"]+)"
    

    The [^"]+ regex matches everything except for the closing quotation mark and parentheses mark the first subexpression.

    If you have absolute paths like <img src="/images/someImage.png"> in your HTML code, use the following replacement:

    \0 \{ File(Aba.searchPath() \1).meta('ImgTag') }
    

    Here, we insert the whole match \0, which is the img tag and its src attribute. Then, we insert width and height via the meta function. The Aba.searchPath() function returns the directory that you selected for the search, then the image filename \1 is added to it.

    Relative paths

    Adding width and height to HTML images with relative paths

    If your paths are relative to the html files (e.g., <img src="someImage.png"> or <img src="../banner.png">), then use a simpler replacement:

    \0 \{ File(\1).meta('ImgTag') }
    

    Replacing existing width and height attributes

    If you have existing width and height attributes and you want to replace them, the regex becomes more complex. For example, if the width and height always follow the src attribute:

    <img src="([^"]+)" width="\d+" height="\d+"
    

    And the replacement should be:

    <img src="\1" \{File(Aba.searchPath() \1).meta('ImgTag')}
    
    Matching the existing width and height attributes

    Conclusion

    You can preview the replacements and check that the img tags are matched correctly. If Aba cannot find an image file, it will display an error message with the src attribute and the HTML filename. Then, just press the Replace button and test the result in your browser. If anything goes wrong, you can always undo the replacement.

    Aba can help you to ensure that all of your pages use width and height attributes, which improves performance, prevents layout shifts, and makes your website more visually appealing for the users.

  • Jun 30 2024 at 3:27pm
    Using zero-width assertions in regular expressions

    Anchors ^ $ \b \A \Z

    Anchors in regular expressions allow you to specify context in a string where your pattern should be matched. There are several types of anchors:

    • ^ matches the start of a line (in multiline mode) or the start of the string (by default).
    • $ matches the end of a line (in multiline mode) or the end of the string (by default).
    • \A matches the start of the string.
    • \Z or \z matches the end of the string.
    • \b matches a word boundary (before the first letter of a word or after the last letter of a word).
    • \B matches a position that is not a word boundary (between two letters or between two non-letter characters).

    These anchors are supported in Java, PHP, Python, Ruby, C#, and Go. In JavaScript, \A and \Z are not supported, but you can use ^ and $ instead of them; just remember to keep the multiline mode disabled. Aba Search and Replace always runs in multiline mode, so you can use \A and \Z to match the beginning or the end of a file.

    For example, the regular expression ^abc will match the start of a string that contains the letters "abc". In multiline mode, the same regex will match these letters at the beginning of a line. You can use anchors in combination with other regular expression elements to create more complex matches. For example, ^From: (.*) matches a line starting with From:

    The difference between \Z and \z is that \Z matches at the end of the string but also skips a possible newline character at the end. In contrast, \z is more strict and matches only at the end of the string.

    If you have read the previous part of this article, you may wonder if the anchors add any additional capabilities that are not supported by the three primitives (alternation, parentheses, and the star for repetition). The answer is: they do not, but they change what is captured by the regular expression. You can match a line starting with abc by explicitly adding the newline character: \nabc, but in this case, you will also match the newline character itself. When you use ^abc, the newline character is not consumed.

    In a similar way, ing\b matches all words ending with ing. You can replace the anchor with a character class containing non-letter characters (such as spaces or punctuation): ing\W, but in this case, the regular expression will also consume the space or punctuation character.

    If the regular expression starts with ^ so that it only matches at the start of the string, it's called anchored. In some programming languages, you can do an anchored match instead of the non-anchored search without using ^. For example, in PHP (PCRE), you can use the A modifier.

    So the anchors don't add any new capabilities to the regular expressions, but they allow you to manage which characters will be included into the match or to match only at the beginning or end of the string. The matched language is still regular.

    Zero-width assertions (?= ) (?! ) (?<= ) (?<! )

    Zero-width assertions (also called lookahead and lookbehind assertions) allow you to check that a pattern occurs in the subject string without capturing any of the characters. This can be useful when you want to check for a pattern without moving the match pointer forward. For example, you can test that the next characters are abc without consuming them: (?=abc).

    Zero-width assertions are generalized anchors. Just like anchors, they don't consume any character from the input string. Unlike anchors, they allow you to check anything, not only line boundaries or word boundaries. So you can replace an anchor with a zero-width assertion, but not vice versa. For example, ing\b could be rewritten as ing(?=\W|$).

    Aba documentation includes a detailed article on zero-width assertions (lookaround) and their typical usage, so we won't repeat it here. Zero-width lookahead and lookbehind are supported in PHP, JavaScript, Python, Java, and Ruby. Unfortunately, they are not supported in Go.

    Just like anchors, zero-width assertions still match a regular language, so from a theoretical point of view, they don't add anything new to the capabilities of regular expressions. They just make it possible to skip certain things from the captured string, so you only check for their presence but don't consume them.

  • May 12 2024 at 10:54am
    Aba 2.7 released

    In the new version, Aba got a UI facelift and dark mode. Several critical bugs were fixed in this release, so it's recommended for everyone to install. The changes are:

    • Dark mode.
    • A larger, more modern UI font (Segoe UI).
    • Syntax highlight for Java, C#, SQL, and Pascal.
    • Drag and drop into the main window.
    • Autocomplete in the path combobox.
    • Allow to use a file name in double quotes.
    • Fixed 13 bugs including 6 critical ones.
    Dark mode

    Just as always, the upgrade is free for the registered users.

BitsDuJour is for People who Love Software
Every day we review great Mac & PC apps, and get you discounts up to 100%
Follow Us
© Copyright 2025 BitsDuJour LLC. Code & Design. All Rights Reserved. Privacy Policy