Using JavaScript, you can split a string by whitespace unless it is surrounded by parentheses, single quotation marks, or square brackets

Here is my method: https://regex101.com/r/vyKG1j/1

[\s]+(?!([^[]*])|([^\(]*\)))

However, I encountered issues with encapsulated brackets like (a b (c d)) and struggled to include apostrophe search.

For example:

"a b (a (a b)) [a b c d] 'test string' (a b)"

Expected results:
["a", "b", "(a (a b))", "[a b c d]", "'test string'", "(a b)"]

It would be ideal if the solution could also handle situations like this.

For instance: "a b abcd(a b)"
Desired output:["a", "b", "abcd(a b)"]

Do you think regex is the most effective approach here?

Answer №1

If you're wondering whether a problem can be solved using regular expressions, ask yourself this: "Can I create a finite automata (state machine) for this issue?" Keep in mind that the automata cannot store any information.

Now let's examine the nested structure within the substring provided: (a (a b))

How would you design a universal finite automata to handle this situation? Specifically, how will the automata keep track of the number of opening brackets to ensure there are an equal number of closing brackets in a certain pattern?

This string pattern cannot be effectively processed using only pure regular expressions.

In this straightforward scenario, my approach would involve iterating through the string while utilizing a stack to monitor the brackets and quotation marks in order to manually parse it.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Notify the user before they navigate away from the current page

I need to implement a warning message for users before they close the page, but only if the data is being processed or uploaded to the server in my asp.net web application. I initially tried using the onbeforeunload javascript event, but it doesn't se ...

Replace the dot with a comma when using commas with numbers as input

Currently, I am utilizing the <input type="number"... element in my code. However, I encountered an issue where I cannot use commas when entering numbers. I tried changing the input to <input type="text", but this solution led to further complicati ...

Experience interactive video playback by seamlessly transitioning a webpage video into a pop-up when clicking on an

I want to have a video play as a pop-up when the user clicks a play button, while also fading out the background of the page. It should be similar to the way it works on this website when you click to watch a video. How can I achieve this? <div class=" ...

What distinguishes between employing a div versus a canvas element for a three.js display?

While it is commonly believed that three.js requires the HTML5 <canvas> element, I have found success in using a simple <div> by assigning height and width properties and then adding the WebGLRenderer.domElement as its child within the HTML str ...

Leveraging AJAX for implementing PHP scripts

While I may not be an MVC model expert, I'm trying to keep my page design separate from my logic in order to simplify things. I have already created a basic template and now I want hyperlinks to open PHP files within the same page. For example: Next ...

Failure of window marker to trigger click event in jquery-bing-maps

I'm encountering an issue where clicking on links within Window markers on Bing Maps redirects me to a new page instead of triggering a JavaScript event as intended. $('.single_address').on('click', function (evt) { alert(&apo ...

Using Behavior Subject for pagination in Angular with RxJS

Currently, I am creating a filtering system for a product list based on category IDs using the RXJS operator BehaviorSubject. However, I have encountered an issue with implementing infinite scrolling with Behavior Subject because I am unable to access the ...

Issue with Ember Select not updating selection binding when populated by another Ember Select

New to Ember.js and grappling with the binding of selection in Select views to the controller. The template I am working with is as follows: {{view Ember.Select contentBinding="content" selectionBinding="selectedCompany" optionLabelPath="content.nam ...

Using React.js CSSTransition Component properties with TransitionGroup

Exploring ways to animate a group of divs has led me to discover this example which perfectly fits my needs. However, as I am still new to React, I'm having trouble understanding how the props are passed through the <Fade> component, specificall ...

The modification of input type is ineffective on Google Chrome and Safari browsers

I have encountered an issue where I am attempting to change a hidden input type into a file input type onclick of a button. The code works as expected on Mozilla Firefox and Internet Explorer, however, it does not function properly on Google Chrome and Saf ...

How can I retrieve the most recent date from a collection of hashes and then extract the corresponding name key/value pair?

I am dealing with an array of hashes structured like this: [ { "Address": 25, "AlertType": 1, "Area": "North", "MeasureDate": "2019-02-01T00:01:01.001Z", "MeasureValue": -1 }, { "Address": 26, "AlertType": 1, "Area": "West", "MeasureDa ...

Easily visualize the JSON object hierarchy within Eclipse using JavaScript

Is there a way to view the JSON parse objects structure in Eclipse without using console.log() in Chrome due to cross domain issues? I need assistance with how to view the [object Object] returned structure from Json.Parse. ...

Generate a series of inquiries from an API response and display them dynamically, complete with a text field and radio button for each question

Currently, I am in the process of developing a Question/Answer page using ReactJS. The questions are retrieved through an API call. I aim to present a series of radio buttons and text fields for users to respond to these questions. A "Panel" that resemble ...

What is preventing Facebook from merging its CSS/JS files together?

I wonder about the reasoning behind Facebook developers' decision not to consolidate their scripts and stylesheets into single files, opting instead to load them on demand through their CDN. Considering the complexity of Facebook as an application, I ...

Unable to set DIV to 'inline-block' or none based on checkbox selection

Despite reviewing multiple examples, I am still struggling to make this DIV visible and hidden by clicking a checkbox. Can someone please review my JavaScript code? <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Conten ...

The javascript code embedded within an AngularJS partial view is not functioning properly

To prevent loading all JavaScript in index.html, the focus should be on initializing scripts at the partial view level. For example, let's say there is a partial view with a date picker. The initialization of the date picker should happen within the ...

Switch to a different tab using Bootstrap's navigation tabs and display the corresponding content

I have a regular bootstrap tab panel that allows me to switch between blocks In List 1's content, I included a button called Go to List 2 However, I am struggling to figure out how to make it so that clicking on this button will switch to the List 2 ...

I am looking for a string with this particular format in JavaScript

I am working with a JSON string array that looks like this: var dataMaster = [ {"id":1,"name":"John Doe","age":30}, {"id":2,"name":"Jane Smith","age":28} ] If you want to see how I would like to transform this data, please visit the following lin ...

Displaying the Selected Value from the DropDown in the Menu

I am working with Bootstrap5 and have the following dropdown menu in my code. Instead of displaying "Year," I would like to show which member was selected. How can I achieve this? <div class="dropdown"> <button class="btn btn- ...

The dynamic change of a required field property does not occur

I am facing an issue where one of my fields in the form should be mandatory or not based on a boolean variable. Even if the variable changes, the field always remains required. I'm puzzled about why my expressionProperties templateOptions.required is ...