Regular expressions, often abbreviated as "regex," are a powerful tool for handling strings and text in programming. In the context of VBA (Visual Basic for Applications), regular expressions offer a versatile way to search, match, and manipulate text within the Microsoft Office Suite. This capability becomes particularly potent when combined with the `Split` function in VBA, which divides a text string into a dynamic array based on a specified delimiter. The synergy between regular expressions and the `Split` function allows for more sophisticated text processing tasks, such as parsing complex data formats, validating input, and transforming strings in ways that would be cumbersome or impractical with traditional string functions alone.
From a developer's perspective, regular expressions in vba can significantly reduce the amount of code required for text processing. Instead of writing lengthy procedures with multiple loops and conditionals, a developer can define a regex pattern that encapsulates the criteria for matching or replacing text. For instance, consider a scenario where you need to extract all email addresses from a large document. Using regular expressions, you can create a pattern like `"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}"` and quickly find all matches in the document.
From an end-user's standpoint, the integration of regular expressions in VBA scripts can enhance the user experience by automating repetitive tasks. Users who frequently work with data entry or report generation will appreciate the ability to automate the cleaning and formatting of text data. For example, a user could employ a regex pattern to automatically format phone numbers in a consistent style, regardless of how they were originally entered.
Here is an in-depth look at how regular expressions can be harnessed in VBA:
1. Pattern Matching: At the core of regex is the ability to define patterns. In VBA, this is done using the `RegExp` object. Patterns can include literal characters, wildcards, character classes, and quantifiers. For example, the pattern `"\d{3}-\d{2}-\d{4}"` can be used to match social Security numbers in the format `XXX-XX-XXXX`.
2. String Splitting: The `Split` function in VBA can be enhanced with regex to split strings based on patterns rather than simple delimiters. For instance, splitting a string at every occurrence of one or more whitespace characters can be achieved with the regex pattern `"\s+"`.
3. Substitutions and Replacements: Regular expressions in VBA allow for sophisticated search-and-replace operations. Using the `Replace` method of the `RegExp` object, you can replace text based on a pattern. For example, to anonymize names in a document, you could use a pattern like `"\b[A-Z][a-z]+ [A-Z][a-z]+\b"` and replace matches with a placeholder.
4. Validation: Regex can be used to validate user input, ensuring it conforms to a specific format. For example, a regex pattern can verify that a user-entered date follows the `MM/DD/YYYY` format before processing it.
5. Complex Parsing: When dealing with structured text formats like CSV or log files, regular expressions can parse the text into usable components. For example, a regex pattern can extract values from a CSV line while accounting for potential commas within quoted fields.
To illustrate these concepts with an example, let's consider a VBA function that uses regex to validate and format a list of phone numbers:
```vba
Function FormatPhoneNumbers(ByVal inputRange As Range) As Variant
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
Regex.Global = True
Regex.Pattern = "(\d{3})(\d{3})(\d{4})"
Dim cell As Range
Dim output() As Variant
ReDim output(1 To inputRange.Cells.Count)
Dim i As Integer
I = 1
For Each cell In inputRange
If regex.Test(cell.Value) Then
Output(i) = regex.Replace(cell.Value, "($1) $2-$3")
Else
Output(i) = "Invalid"
End If
I = i + 1
Next cell
FormatPhoneNumbers = output
End Function
In this function, we define a regex pattern to match a 10-digit phone number. We then iterate over a range of cells, formatting each cell's value if it matches the pattern or marking it as "Invalid" if it doesn't. This is just one example of how regular expressions can streamline text processing in vba, making it a valuable skill for any developer working within the Office ecosystem. By mastering regular expressions and their integration with VBA's `Split` function, you can unlock new levels of efficiency and capability in your Office-based applications.
Introduction to Regular Expressions in VBA - Regular Expressions: Harnessing Regular Expressions: The Synergy with VBA Split
The vba Split function is a powerful tool that allows users to divide a string into an array based on a delimiter, which can be a character or a string. This function is particularly useful when dealing with strings that contain structured data, such as CSV files or log entries, where you need to separate values to process them individually. The synergy between regular expressions and the VBA Split function lies in their combined ability to parse and manipulate strings with precision and flexibility.
From a programmer's perspective, the VBA Split function is invaluable for tasks that require string manipulation. For instance, when processing user input or file content, it's often necessary to break down the information into manageable pieces. The Split function enables this by providing a straightforward way to dissect a string at each occurrence of a specified delimiter.
Here's an in-depth look at the VBA Split function:
1. Syntax: The basic syntax of the VBA Split function is `Split(expression, [delimiter], [limit], [compare])`. `Expression` is the string you want to split, `delimiter` is the character or characters that mark the boundaries between each piece, `limit` is a number that specifies the maximum number of substrings to return, and `compare` is an optional parameter that defines the type of comparison to use (binary or textual).
2. Delimiter: The delimiter is crucial because it defines where the splits in the string will occur. It can be a single character like a comma or space, or it can be a string of multiple characters. If no delimiter is specified, the space character is used as the default.
3. Limit: The `limit` parameter can be used to control the number of substrings returned by the Split function. If set to -1, the function will return all possible substrings. If set to a positive number, the function will return that many substrings, with the last substring containing the rest of the string.
4. Compare: The `compare` parameter allows you to specify whether the comparison should be case-sensitive (`vbBinaryCompare`) or not (`vbTextCompare`). This can be important when the delimiter might vary in case.
5. Return Value: The Split function returns a zero-based array containing the substrings. This array can then be iterated over, allowing you to work with each individual piece of the original string.
Examples to Highlight the Functionality:
- Basic Usage:
```vba
Dim result() As String
Result = Split("one,two,three", ",")
' result(0) will contain "one"
' result(1) will contain "two"
' result(2) will contain "three"
- Using Limit:
```vba
Dim result() As String
Result = Split("one,two,three,four", ",", 2)
' result(0) will contain "one"
' result(1) will contain "two,three,four"
- Case Sensitivity:
```vba
Dim result() As String
Result = Split("One;one;ONE", ";", -1, vbTextCompare)
' All instances of "one" regardless of case will be split
By combining the VBA Split function with regular expressions, you can create more dynamic and robust string manipulation routines. regular expressions allow for pattern matching, which can be used to define more complex delimiters that are not fixed strings. This opens up possibilities for parsing strings that have variable structures or that require more sophisticated separation logic.
The VBA Split function is a versatile and essential tool in any VBA programmer's toolkit. Its simplicity belies its power, and when used in conjunction with regular expressions, it becomes an even more potent instrument for managing and manipulating strings in a myriad of ways. Whether you're a beginner or an experienced developer, mastering the Split function will undoubtedly enhance your programming capabilities.
Understanding the VBA Split Function - Regular Expressions: Harnessing Regular Expressions: The Synergy with VBA Split
Regular expressions (regex) are a powerful tool for processing text, and when combined with the VBA Split function, they become an indispensable asset for any developer or data analyst working with Microsoft Excel or other VBA-enabled applications. The synergy between regex and VBA Split lies in their ability to dissect and analyze strings at a granular level, offering a degree of flexibility and precision that traditional string manipulation functions simply cannot match. From parsing CSV files to cleaning up and reformatting data, the applications are virtually limitless. By harnessing the power of regular expressions within VBA, users can perform complex text processing tasks with relative ease, transforming cumbersome workflows into streamlined processes.
Here are some in-depth insights into how regular expressions enhance the capabilities of the VBA Split function:
1. Pattern Matching: Regular expressions allow you to define complex patterns that can match various string configurations. For example, splitting a string at every comma that is not enclosed in quotes can be a challenge with the standard Split function. However, with regex, you can define a pattern that recognizes commas only when they are not within quotes, thus preserving the integrity of data entries.
2. Conditional Splitting: Sometimes, you may want to split a string based on multiple conditions or delimiters. Regex provides the flexibility to specify multiple patterns, enabling you to split a string at different points based on different criteria. For instance, you could split a log file into its constituent parts by defining delimiters for timestamps, log levels, and messages.
3. Capturing Groups: With regex, you can define capturing groups that allow you to extract specific parts of a string while splitting it. This feature is particularly useful when you need to parse strings and retain certain elements for further processing. For example, when working with a string containing key-value pairs, you can use capturing groups to extract the keys and values separately.
4. Efficiency in Data Cleaning: regular expressions excel at identifying patterns and anomalies in data, making them an excellent tool for data cleaning tasks. When combined with VBA Split, you can quickly isolate and remove unwanted characters or substrings from your data, ensuring that your datasets are clean and ready for analysis.
5. Advanced Search and Replace: Beyond simple splitting, regex allows for sophisticated search and replace operations within strings. This capability can be used to reformat data, such as converting dates to a standard format or replacing abbreviations with their full forms.
To illustrate the power of combining regular expressions with VBA Split, consider the following example:
```vba
Function SplitRegex(inputString As String, pattern As String) As Variant
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
Regex.Global = True
Regex.Pattern = pattern
Dim matches As Object
Set matches = regex.Execute(inputString)
Dim results() As String
ReDim results(matches.Count - 1)
Dim i As Integer
For i = 0 To matches.Count - 1
Results(i) = matches(i).Value
Next i
SplitRegex = results
End Function
In this example, the `SplitRegex` function utilizes a regex pattern to split the input string. This approach provides a level of detail and control that the standard VBA Split function cannot offer, showcasing the synergy between regular expressions and VBA Split in action. Whether you're dealing with complex data extraction, string manipulation, or data cleaning tasks, the combination of these two technologies can significantly enhance your productivity and the accuracy of your results. The key is to understand the regex patterns and how they can be applied effectively within the context of VBA to unlock their full potential.
The Power of Regular Expressions with VBA Split - Regular Expressions: Harnessing Regular Expressions: The Synergy with VBA Split
In the realm of data manipulation and analysis, the ability to parse and dissect information efficiently stands paramount. Regular expressions (regex) serve as a powerful tool in this regard, offering a versatile syntax to identify patterns within text. When combined with the `Split` function in visual Basic for applications (VBA), regex transforms from a mere search tool into a dynamic data parsing powerhouse. This synergy allows for the dissection of complex data strings into usable components, enabling analysts and developers to handle data with unprecedented precision and ease.
From the perspective of a data analyst, regex patterns can significantly reduce the time spent on data cleaning. Consider a scenario where a dataset contains a column of mixed-format phone numbers. Using regex, one can create a pattern that isolates the numeric components, disregarding any parentheses, dashes, or spaces. The `Split` function can then be employed to separate these numbers into country code, area code, and the subscriber number, thus standardizing the phone number format across the dataset.
For a software developer, the combination of regex and VBA's `Split` function can streamline the process of reading and interpreting configuration files or logs. For instance, extracting key-value pairs from a log file becomes a trivial task when a regex pattern is designed to match the keys, and `Split` is used to segregate the values for further processing.
Here are some practical examples that showcase the utility of regex in conjunction with the `Split` function:
1. Extracting Email Addresses from a Document:
- Regex Pattern: `\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b`
- VBA Code Example:
```vba
Dim emailAddresses As Variant
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
Regex.Pattern = "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b"
Regex.Global = True
EmailAddresses = Split(regex.Execute(documentContent), ";")
```2. Parsing Dates in Various Formats:
- Regex Pattern: `(\d{1,2})[-/](\d{1,2
Simplifying Data Parsing - Regular Expressions: Harnessing Regular Expressions: The Synergy with VBA Split
advanced pattern matching techniques extend the capabilities of regular expressions, allowing for more sophisticated and nuanced data manipulation. These techniques are particularly useful when dealing with complex string patterns that require a level of precision beyond what basic regular expressions can provide. By harnessing the power of these advanced methods, users can perform tasks such as conditional matching, lookaround assertions, and backreferences, which enable the matching of patterns that are not only based on the text itself but also on its surrounding context or previously matched groups.
From a developer's perspective, advanced pattern matching is akin to having a sharper tool in one's kit. It opens up possibilities for cleaner, more efficient code. For data analysts, it means being able to sift through large datasets with greater accuracy, extracting exactly what's needed without the noise. And from an end-user standpoint, it translates to more reliable applications that behave as expected, even with complex input.
Here are some in-depth insights into advanced pattern matching techniques:
1. Conditional Matching: This allows patterns to match only if certain conditions are met. For example, in VBA, you can use `(?(condition)true-pattern|false-pattern)` to match `true-pattern` if `condition` is true, and `false-pattern` otherwise. This is particularly useful in scenarios where the pattern to match may vary depending on the context.
2. Lookaround Assertions: These are zero-width assertions that allow you to look ahead or behind without consuming characters in the string. They come in four flavors: lookahead (`(?=...)`), negative lookahead (`(?!...)`), lookbehind (`(?<=...)`), and negative lookbehind (`(?
3. Backreferences: By using backreferences, you can match the same text as previously matched by a capturing group. This is denoted by `\n`, where `n` is the number of the group. In VBA, if you wanted to find repeated words in a string, you could use `(\b\w+\b)\s+\1` to match any word followed by the same word.
4. Non-Capturing Groups: Sometimes, you need to group parts of your pattern without creating a capturing group. This is where non-capturing groups come in handy, denoted by `(?:...)`. They are used when you want to apply quantifiers or logical operations to part of your pattern without storing the matched substring.
5. Named Groups: Instead of referring to groups by numbers, you can name them for better readability and maintainability using the syntax `(?
6. Atomic Groups: These groups `(?>...)` prevent the regex engine from backtracking, which can be useful for optimizing performance in certain situations.
7. Balancing Groups: A feature specific to .NET regex, balancing groups `(?
To illustrate these concepts, consider the task of splitting a string into individual words using VBA's `Split` function, but only if the words are followed by a specific punctuation mark. You could use a lookahead assertion to achieve this:
```vba
Dim inputString As String
Dim splitWords() As String
InputString = "Hello, world! This is an example; of advanced pattern matching."
SplitWords = Split(inputString, " ", -1, vbTextCompare)
In this example, the `Split` function would normally divide the string at every space character. However, by incorporating a lookahead assertion, you could modify the pattern to split the string only when a space is followed by a comma or a semicolon, thus refining the output to meet more complex requirements.
By mastering these advanced pattern matching techniques, you can significantly enhance the functionality of regular expressions, particularly when combined with the `Split` function in VBA, leading to more powerful and flexible string manipulation capabilities.
Advanced Pattern Matching Techniques - Regular Expressions: Harnessing Regular Expressions: The Synergy with VBA Split
Optimizing the performance of regular expressions in VBA, particularly when used in conjunction with the `Split` function, is a nuanced process that requires a deep understanding of both the regular expression engine and the VBA runtime environment. Regular expressions are powerful tools for pattern matching and text manipulation, but their flexibility can come at a cost of efficiency. When poorly written or applied without consideration for their complexity, regular expressions can significantly slow down a program, especially when processing large datasets or complex string patterns. Therefore, it's crucial to adopt best practices that ensure regular expressions are not only functional but also performant.
From the perspective of a seasoned developer, the key to optimizing regular expressions lies in their construction. Simplicity and specificity are the guiding principles. A simple regex is not only easier to read and maintain but often executes faster. Specificity, on the other hand, reduces the workload on the regex engine by narrowing down the possible matches. Here are some best practices to enhance the performance of your regular expressions:
1. Use Non-Capturing Groups: Instead of `(pattern)`, use `(?:pattern)` when you don't need to capture the group. This avoids the overhead of storing the captured group.
Example: `Split(text, "(?:\d{4})")` splits the text at every non-captured group of four digits.
2. Prefer Character Classes Over Alternation: `[aeiou]` is more efficient than `(a|e|i|o|u)` because it avoids backtracking.
3. Anchor Patterns When Possible: Using `^` for the start and `$` for the end of a string can drastically reduce the search space.
Example: `^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$` is a regex for validating email addresses that anchors at both ends.
4. Avoid Greedy Quantifiers: Use `?`, `*?`, or `+?` to make quantifiers non-greedy and prevent them from consuming more characters than necessary.
Example: `Split(text, "<.+?>")` splits the text at the shortest sequence between `<` and `>`.
5. Optimize for the Regex Engine's Strengths: Some engines are optimized for certain operations. Knowing these can help write more efficient regex.
6. Test and Refine: Use regex testing tools to measure performance and refine your expressions.
7. Combine `Split` with Regex Judiciously: Sometimes, a combination of `Split` and simple string operations can be more efficient than a complex regex.
Example: Splitting a CSV file might be faster using `Split(text, ",")` followed by trimming spaces, rather than a single regex that accounts for spaces.
8. Precompile Regex If Used Frequently: In VBA, you can create a `RegExp` object and set its `Pattern` property once if you're going to use the same regex multiple times.
By integrating these practices into your development workflow, you can ensure that your use of regular expressions with VBA's `Split` function is both effective and efficient, leading to faster execution times and a smoother user experience. Remember, the goal is to write expressions that are not only correct but also optimized for performance. Regular expressions are a powerful tool, and with careful use, they can provide excellent performance without compromising their powerful capabilities.
Best Practices - Regular Expressions: Harnessing Regular Expressions: The Synergy with VBA Split
Regular expressions are a powerful tool for text processing, and when combined with the VBA Split function, they can significantly enhance data manipulation capabilities in applications like Excel. However, this synergy is not without its pitfalls. A common mistake is overcomplicating patterns, which can lead to unreadable code and errors that are hard to debug. It's crucial to strike a balance between complexity and readability. Another pitfall is not accounting for edge cases, such as unexpected input formats or special characters that can disrupt the intended function of the regex pattern.
To navigate these challenges, consider the following insights and strategies:
1. Start Simple: Begin with the simplest pattern that could possibly work and gradually add complexity only as needed. For example, to split a string into words, start with a simple space character as the delimiter before adding more complex patterns.
2. Use Comments: VBA allows comments using the `'` symbol. Use this to explain complex regex patterns, making the code more maintainable.
3. Test Incrementally: Test your regular expressions with a variety of data samples, especially edge cases. Tools like regex testers can be invaluable for this purpose.
4. Escape Special Characters: If you're looking to match special characters like `.` or `*`, remember to escape them using a backslash (`\`) to avoid unintended matches.
5. Consider Performance: Complex regex patterns can be slow. Optimize by avoiding greedy quantifiers and unnecessary groupings when possible.
6. Pattern Reuse: Store frequently used patterns in variables or constants to promote reuse and reduce errors in rewriting the pattern.
For instance, if you're trying to split a string of comma-separated values that may contain commas within quotes, a naive split on the comma character would not suffice. Instead, a pattern like `,(?![^"]"(?:(?:[^"]"){2})[^"]$)` would consider commas inside quotes. This pattern looks complex, but breaking it down with comments and testing it incrementally can ensure it works as intended.
By being mindful of these common pitfalls and adopting a methodical approach to using regular expressions with VBA Split, you can harness their full potential while minimizing the risk of errors. Remember, the goal is not just to make the code work, but to make it work efficiently and be understandable to others who may read it.
Common Pitfalls and How to Avoid Them - Regular Expressions: Harnessing Regular Expressions: The Synergy with VBA Split
Testing and debugging regular expressions can be a daunting task, even for experienced developers. Regular expressions are powerful tools for pattern matching and text manipulation, but their syntax can be complex and often unintuitive. When combined with VBA's Split function, they become even more potent, allowing for intricate string operations and data parsing. However, the power of regular expressions comes with the responsibility of ensuring they work correctly and efficiently. This requires a methodical approach to testing and debugging, which involves understanding the intricacies of regular expression patterns, anticipating edge cases, and using the right tools to visualize and step through the matches.
From a developer's perspective, the first step in testing a regular expression is to check its syntax and structure. This involves ensuring that all quantifiers, character classes, and position anchors are correctly placed. It's also crucial to test the expression against a variety of input strings to confirm that it behaves as expected. Developers often use unit tests to automate this process, which can save time and prevent regressions in the future.
On the other hand, from a user's perspective, especially those not familiar with regular expression syntax, testing might involve using online testers or built-in features in text editors that highlight matches. These tools provide immediate visual feedback, making it easier to spot errors or unintended matches.
Here are some in-depth insights and examples to consider when testing and debugging regular expressions:
1. Use Visual Tools for Pattern Testing: Tools like regex101 or RegExr allow you to input your regular expression and test strings to see the matches in real-time. They also explain each part of your regex, which is invaluable for debugging.
2. Unit Testing: Write unit tests for your regular expressions. For example, if you have a regex designed to match email addresses, create a test suite with valid and invalid email addresses to ensure your regex works as intended.
3. Boundary Conditions: Test your regex with edge cases. For instance, if you're splitting a string into words, consider cases with punctuation, spaces, or special characters. Example:
```vba
Dim inputString As String
Dim regexPattern As String
Dim splitResults() As String
InputString = "Hello, world! This is a test."
RegexPattern = "\b" ' Word boundary
SplitResults = Split(inputString, regexPattern)
' Output should be an array of words without punctuation
```4. Performance Testing: Regular expressions can be slow if not optimized. Test the performance of your regex, especially if it's being used in a loop or processing large amounts of text.
5. Escape Characters: Ensure that escape characters are used when necessary. For example, to match a period, you should use `\.` instead of just `.` which matches any character.
6. Grouping and Capturing: Use parentheses to group parts of your regex and capture them for use with the VBA Split function. For example:
```vba
Dim inputString As String
Dim regexPattern As String
Dim splitResults() As String
InputString = "Name: John Doe, Age: 30"
RegexPattern = "(Name: )|(, Age: )" ' Groups to split by
SplitResults = Split(inputString, regexPattern)
' Output should be ["John Doe", "30"]
```7. Lookahead and Lookbehind: These are zero-width assertions that don't consume characters in the string but assert whether a match is possible or not. They can be crucial in complex matching scenarios.
By incorporating these strategies and considering different perspectives, you can ensure that your regular expressions are robust, efficient, and maintainable. Remember, the goal is not just to make the regex work, but to make it understandable and efficient, so that it can be easily tested and debuged now and in the future.
Testing and Debugging Regular Expressions - Regular Expressions: Harnessing Regular Expressions: The Synergy with VBA Split
Venturing beyond the fundamental uses of regular expressions in VBA, we encounter a realm where the complexity of tasks demands a more nuanced approach. Regular expressions, when combined with the VBA Split function, unlock a powerful synergy that can handle intricate string manipulation challenges. This combination is particularly potent in parsing and restructuring data, where conventional methods may falter. By harnessing this duo, developers can craft solutions that are not only efficient but also maintainable and readable.
From data validation to complex parsing, the applications are vast:
1. advanced Data validation: Regular expressions excel in validating strings against patterns. When paired with VBA Split, they can validate individual components of a string, such as ensuring that each segment of a CSV file adheres to a specific format.
Example: `^\d{3},\d{2},[A-Za-z]+$` ensures that each CSV segment has three digits, followed by two digits, and ends with one or more letters.
2. Multi-level Splitting: Sometimes, data needs to be split on multiple delimiters. Regular expressions can define a pattern that includes multiple delimiter characters, allowing for a single-step split operation.
Example: Splitting a string on commas and semicolons can be achieved with the pattern `[,;]+`.
3. Conditional Splitting: There are scenarios where a split should only occur under certain conditions. Regular expressions can be crafted to match only when those conditions are met, preventing unnecessary splits.
Example: Splitting a string only when a comma is followed by a space can be done with the pattern `, (?=\s)`.
4. Pattern-based Data Extraction: Regular expressions can be used to identify and extract patterns from text, which can then be processed individually with the Split function.
Example: Extracting phone numbers from a document before splitting them into country code, area code, and number.
5. String Cleaning and Preprocessing: Before splitting strings, it's often necessary to clean them up. Regular expressions can remove unwanted characters or normalize spacing, ensuring that the Split function works as intended.
Example: Replacing multiple spaces with a single one using the pattern `\s+` before splitting on spaces.
6. Nested Data Handling: When dealing with nested data structures like JSON or XML, regular expressions can help navigate through layers of complexity, allowing for targeted splitting and manipulation.
Example: Identifying and extracting values from a JSON string before splitting them into key-value pairs.
By integrating regular expressions with VBA Split, developers can approach data manipulation with a level of precision and flexibility that traditional methods cannot match. This synergy opens up a landscape of possibilities, enabling solutions that are as elegant as they are effective. Whether it's through refining data inputs or crafting intricate data transformations, the partnership between regular expressions and VBA Split stands as a testament to the power of combining simple tools to achieve complex outcomes.
Further Applications - Regular Expressions: Harnessing Regular Expressions: The Synergy with VBA Split
Read Other Blogs